diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2009-12-11 15:23:29 -0500 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-12-11 15:23:29 -0500 |
| commit | aad3bf04dca5a2147a8406f7aef5703ee5259a52 (patch) | |
| tree | 558d5915ddceab6bb47ed844dea9386c6036d087 /arch/mips/kernel/linux32.c | |
| parent | 11bd04f6f35621193311c32e0721142b073a7794 (diff) | |
| parent | aa65607373a4daf2010e8c3867b6317619f3c1a3 (diff) | |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/viro/mmap
* git://git.kernel.org/pub/scm/linux/kernel/git/viro/mmap:
Add missing alignment check in arch/score sys_mmap()
fix broken aliasing checks for MAP_FIXED on sparc32, mips, arm and sh
Get rid of open-coding in ia64_brk()
sparc_brk() is not needed anymore
switch do_brk() to get_unmapped_area()
Take arch_mmap_check() into get_unmapped_area()
fix a struct file leak in do_mmap_pgoff()
Unify sys_mmap*
Cut hugetlb case early for 32bit on ia64
arch_mmap_check() on mn10300
Kill ancient crap in s390 compat mmap
arm: add arch_mmap_check(), get rid of sys_arm_mremap()
file ->get_unmapped_area() shouldn't duplicate work of get_unmapped_area()
kill useless checks in sparc mremap variants
fix pgoff in "have to relocate" case of mremap()
fix the arch checks in MREMAP_FIXED case
fix checks for expand-in-place mremap
do_mremap() untangling, part 3
do_mremap() untangling, part 2
untangling do_mremap(), part 1
Diffstat (limited to 'arch/mips/kernel/linux32.c')
| -rw-r--r-- | arch/mips/kernel/linux32.c | 19 |
1 files changed, 2 insertions, 17 deletions
diff --git a/arch/mips/kernel/linux32.c b/arch/mips/kernel/linux32.c index 1a2793efdc4e..f042563c924f 100644 --- a/arch/mips/kernel/linux32.c +++ b/arch/mips/kernel/linux32.c | |||
| @@ -67,28 +67,13 @@ SYSCALL_DEFINE6(32_mmap2, unsigned long, addr, unsigned long, len, | |||
| 67 | unsigned long, prot, unsigned long, flags, unsigned long, fd, | 67 | unsigned long, prot, unsigned long, flags, unsigned long, fd, |
| 68 | unsigned long, pgoff) | 68 | unsigned long, pgoff) |
| 69 | { | 69 | { |
| 70 | struct file * file = NULL; | ||
| 71 | unsigned long error; | 70 | unsigned long error; |
| 72 | 71 | ||
| 73 | error = -EINVAL; | 72 | error = -EINVAL; |
| 74 | if (pgoff & (~PAGE_MASK >> 12)) | 73 | if (pgoff & (~PAGE_MASK >> 12)) |
| 75 | goto out; | 74 | goto out; |
| 76 | pgoff >>= PAGE_SHIFT-12; | 75 | error = sys_mmap_pgoff(addr, len, prot, flags, fd, |
| 77 | 76 | pgoff >> (PAGE_SHIFT-12)); | |
| 78 | if (!(flags & MAP_ANONYMOUS)) { | ||
| 79 | error = -EBADF; | ||
| 80 | file = fget(fd); | ||
| 81 | if (!file) | ||
| 82 | goto out; | ||
| 83 | } | ||
| 84 | flags &= ~(MAP_EXECUTABLE | MAP_DENYWRITE); | ||
| 85 | |||
| 86 | down_write(¤t->mm->mmap_sem); | ||
| 87 | error = do_mmap_pgoff(file, addr, len, prot, flags, pgoff); | ||
| 88 | up_write(¤t->mm->mmap_sem); | ||
| 89 | if (file) | ||
| 90 | fput(file); | ||
| 91 | |||
| 92 | out: | 77 | out: |
| 93 | return error; | 78 | return error; |
| 94 | } | 79 | } |
