Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 110341
b: refs/heads/master
c: e9c8abb
h: refs/heads/master
i:
  110339: d9d71ef
v: v3
  • Loading branch information
Gustavo F. Padovan authored and Ingo Molnar committed Jul 31, 2008
1 parent d3d7320 commit 67b94ce
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 22 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 4df9e510a9fda29aca71d8acac853b98aa6884d1
refs/heads/master: e9c8abb66cc37801bdb5d4360bb78d180c3bbb73
43 changes: 22 additions & 21 deletions trunk/arch/x86/kernel/sys_x86_64.c
Original file line number Diff line number Diff line change
Expand Up @@ -13,15 +13,16 @@
#include <linux/utsname.h>
#include <linux/personality.h>
#include <linux/random.h>
#include <linux/uaccess.h>

#include <asm/uaccess.h>
#include <asm/ia32.h>

asmlinkage long sys_mmap(unsigned long addr, unsigned long len, unsigned long prot, unsigned long flags,
unsigned long fd, unsigned long off)
asmlinkage long sys_mmap(unsigned long addr, unsigned long len,
unsigned long prot, unsigned long flags,
unsigned long fd, unsigned long off)
{
long error;
struct file * file;
struct file *file;

error = -EINVAL;
if (off & ~PAGE_MASK)
Expand Down Expand Up @@ -56,19 +57,19 @@ static void find_start_end(unsigned long flags, unsigned long *begin,
unmapped base down for this case. This can give
conflicts with the heap, but we assume that glibc
malloc knows how to fall back to mmap. Give it 1GB
of playground for now. -AK */
*begin = 0x40000000;
*end = 0x80000000;
of playground for now. -AK */
*begin = 0x40000000;
*end = 0x80000000;
if (current->flags & PF_RANDOMIZE) {
new_begin = randomize_range(*begin, *begin + 0x02000000, 0);
if (new_begin)
*begin = new_begin;
}
} else {
*begin = TASK_UNMAPPED_BASE;
*end = TASK_SIZE;
*end = TASK_SIZE;
}
}
}

unsigned long
arch_get_unmapped_area(struct file *filp, unsigned long addr,
Expand All @@ -78,11 +79,11 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr,
struct vm_area_struct *vma;
unsigned long start_addr;
unsigned long begin, end;

if (flags & MAP_FIXED)
return addr;

find_start_end(flags, &begin, &end);
find_start_end(flags, &begin, &end);

if (len > end)
return -ENOMEM;
Expand All @@ -96,12 +97,12 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr,
}
if (((flags & MAP_32BIT) || test_thread_flag(TIF_IA32))
&& len <= mm->cached_hole_size) {
mm->cached_hole_size = 0;
mm->cached_hole_size = 0;
mm->free_area_cache = begin;
}
addr = mm->free_area_cache;
if (addr < begin)
addr = begin;
if (addr < begin)
addr = begin;
start_addr = addr;

full_search:
Expand All @@ -127,7 +128,7 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr,
return addr;
}
if (addr + mm->cached_hole_size < vma->vm_start)
mm->cached_hole_size = vma->vm_start - addr;
mm->cached_hole_size = vma->vm_start - addr;

addr = vma->vm_end;
}
Expand Down Expand Up @@ -177,7 +178,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
vma = find_vma(mm, addr-len);
if (!vma || addr <= vma->vm_start)
/* remember the address as a hint for next time */
return (mm->free_area_cache = addr-len);
return mm->free_area_cache = addr-len;
}

if (mm->mmap_base < len)
Expand All @@ -194,7 +195,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
vma = find_vma(mm, addr);
if (!vma || addr+len <= vma->vm_start)
/* remember the address as a hint for next time */
return (mm->free_area_cache = addr);
return mm->free_area_cache = addr;

/* remember the largest hole we saw so far */
if (addr + mm->cached_hole_size < vma->vm_start)
Expand Down Expand Up @@ -224,13 +225,13 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
}


asmlinkage long sys_uname(struct new_utsname __user * name)
asmlinkage long sys_uname(struct new_utsname __user *name)
{
int err;
down_read(&uts_sem);
err = copy_to_user(name, utsname(), sizeof (*name));
err = copy_to_user(name, utsname(), sizeof(*name));
up_read(&uts_sem);
if (personality(current->personality) == PER_LINUX32)
err |= copy_to_user(&name->machine, "i686", 5);
if (personality(current->personality) == PER_LINUX32)
err |= copy_to_user(&name->machine, "i686", 5);
return err ? -EFAULT : 0;
}

0 comments on commit 67b94ce

Please sign in to comment.