patch-2.3.46 linux/arch/sparc64/solaris/misc.c
Next file: linux/arch/sparc64/solaris/socksys.c
Previous file: linux/arch/sparc64/mm/ultra.S
Back to the patch index
Back to the overall index
- Lines: 35
- Date:
Mon Feb 14 15:31:14 2000
- Orig file:
v2.3.45/linux/arch/sparc64/solaris/misc.c
- Orig date:
Tue Feb 1 01:35:43 2000
diff -u --recursive --new-file v2.3.45/linux/arch/sparc64/solaris/misc.c linux/arch/sparc64/solaris/misc.c
@@ -83,27 +83,25 @@
}
}
- down(¤t->mm->mmap_sem);
- retval = -ENOMEM;
- if(!(flags & MAP_FIXED) && !addr) {
- unsigned long attempt = get_unmapped_area(addr, len);
- if(!attempt || (attempt >= 0xf0000000UL))
- goto out_putf;
- addr = (u32) attempt;
- }
+ retval = -EINVAL;
+ len = PAGE_ALIGN(len);
if(!(flags & MAP_FIXED))
addr = 0;
+ else if (len > 0xf0000000UL || addr > 0xf0000000UL - len)
+ goto out_putf;
ret_type = flags & _MAP_NEW;
flags &= ~_MAP_NEW;
+ down(¤t->mm->mmap_sem);
flags &= ~(MAP_EXECUTABLE | MAP_DENYWRITE);
retval = do_mmap(file,
(unsigned long) addr, (unsigned long) len,
(unsigned long) prot, (unsigned long) flags, off);
+ up(¤t->mm->mmap_sem);
if(!ret_type)
retval = ((retval < 0xf0000000) ? 0 : retval);
+
out_putf:
- up(¤t->mm->mmap_sem);
if (file)
fput(file);
out:
FUNET's LINUX-ADM group, [email protected]
TCL-scripts by Sam Shen (who was at: [email protected])