summaryrefslogtreecommitdiffstats
path: root/mm/mremap.c
diff options
context:
space:
mode:
authorRalf Baechle <ralf@linux-mips.org>2000-02-24 00:12:35 +0000
committerRalf Baechle <ralf@linux-mips.org>2000-02-24 00:12:35 +0000
commit482368b1a8e45430672c58c9a42e7d2004367126 (patch)
treece2a1a567d4d62dee7c2e71a46a99cf72cf1d606 /mm/mremap.c
parente4d0251c6f56ab2e191afb70f80f382793e23f74 (diff)
Merge with 2.3.47. Guys, this is buggy as shit. You've been warned.
Diffstat (limited to 'mm/mremap.c')
-rw-r--r--mm/mremap.c22
1 files changed, 14 insertions, 8 deletions
diff --git a/mm/mremap.c b/mm/mremap.c
index 45bcf5264..5721fc5d5 100644
--- a/mm/mremap.c
+++ b/mm/mremap.c
@@ -165,19 +165,14 @@ static inline unsigned long move_vma(struct vm_area_struct * vma,
*
* MREMAP_FIXED option added 5-Dec-1999 by Benjamin LaHaise
* This option implies MREMAP_MAYMOVE.
- *
- * "__new_addr" toying in order to not change the saved stack layout
- * for old x86 binaries that don't want %edi to change..
*/
-asmlinkage unsigned long sys_mremap(unsigned long addr,
+unsigned long do_mremap(unsigned long addr,
unsigned long old_len, unsigned long new_len,
- unsigned long flags, unsigned long __new_addr)
+ unsigned long flags, unsigned long new_addr)
{
- unsigned long new_addr = __new_addr;
struct vm_area_struct *vma;
unsigned long ret = -EINVAL;
- down(&current->mm->mmap_sem);
if (flags & ~(MREMAP_FIXED | MREMAP_MAYMOVE))
goto out;
@@ -280,13 +275,24 @@ asmlinkage unsigned long sys_mremap(unsigned long addr,
ret = -ENOMEM;
if (flags & MREMAP_MAYMOVE) {
if (!(flags & MREMAP_FIXED)) {
- new_addr = get_unmapped_area(addr, new_len);
+ new_addr = get_unmapped_area(0, new_len);
if (!new_addr)
goto out;
}
ret = move_vma(vma, addr, old_len, new_len, new_addr);
}
out:
+ return ret;
+}
+
+asmlinkage unsigned long sys_mremap(unsigned long addr,
+ unsigned long old_len, unsigned long new_len,
+ unsigned long flags, unsigned long new_addr)
+{
+ unsigned long ret;
+
+ down(&current->mm->mmap_sem);
+ ret = do_mremap(addr, old_len, new_len, flags, new_addr);
up(&current->mm->mmap_sem);
return ret;
}