diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2009-11-30 17:37:04 -0500 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2009-12-11 06:44:29 -0500 |
commit | f8b7256096a20436f6d0926747e3ac3d64c81d24 (patch) | |
tree | 18bcabd1de263bd2d0f8d6b763bde8b037716c5c /arch/m68knommu | |
parent | 0067bd8a55862ac9dd212bd1c4f6f5bff1ca1301 (diff) |
Unify sys_mmap*
New helper - sys_mmap_pgoff(); switch syscalls to using it.
Acked-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'arch/m68knommu')
-rw-r--r-- | arch/m68knommu/kernel/sys_m68k.c | 38 | ||||
-rw-r--r-- | arch/m68knommu/kernel/syscalltable.S | 2 |
2 files changed, 3 insertions, 37 deletions
diff --git a/arch/m68knommu/kernel/sys_m68k.c b/arch/m68knommu/kernel/sys_m68k.c index efdd090778a3..b67cbc735a9b 100644 --- a/arch/m68knommu/kernel/sys_m68k.c +++ b/arch/m68knommu/kernel/sys_m68k.c | |||
@@ -27,39 +27,6 @@ | |||
27 | #include <asm/cacheflush.h> | 27 | #include <asm/cacheflush.h> |
28 | #include <asm/unistd.h> | 28 | #include <asm/unistd.h> |
29 | 29 | ||
30 | /* common code for old and new mmaps */ | ||
31 | static inline long do_mmap2( | ||
32 | unsigned long addr, unsigned long len, | ||
33 | unsigned long prot, unsigned long flags, | ||
34 | unsigned long fd, unsigned long pgoff) | ||
35 | { | ||
36 | int error = -EBADF; | ||
37 | struct file * file = NULL; | ||
38 | |||
39 | flags &= ~(MAP_EXECUTABLE | MAP_DENYWRITE); | ||
40 | if (!(flags & MAP_ANONYMOUS)) { | ||
41 | file = fget(fd); | ||
42 | if (!file) | ||
43 | goto out; | ||
44 | } | ||
45 | |||
46 | down_write(¤t->mm->mmap_sem); | ||
47 | error = do_mmap_pgoff(file, addr, len, prot, flags, pgoff); | ||
48 | up_write(¤t->mm->mmap_sem); | ||
49 | |||
50 | if (file) | ||
51 | fput(file); | ||
52 | out: | ||
53 | return error; | ||
54 | } | ||
55 | |||
56 | asmlinkage long sys_mmap2(unsigned long addr, unsigned long len, | ||
57 | unsigned long prot, unsigned long flags, | ||
58 | unsigned long fd, unsigned long pgoff) | ||
59 | { | ||
60 | return do_mmap2(addr, len, prot, flags, fd, pgoff); | ||
61 | } | ||
62 | |||
63 | /* | 30 | /* |
64 | * Perform the select(nd, in, out, ex, tv) and mmap() system | 31 | * Perform the select(nd, in, out, ex, tv) and mmap() system |
65 | * calls. Linux/m68k cloned Linux/i386, which didn't use to be able to | 32 | * calls. Linux/m68k cloned Linux/i386, which didn't use to be able to |
@@ -88,9 +55,8 @@ asmlinkage int old_mmap(struct mmap_arg_struct *arg) | |||
88 | if (a.offset & ~PAGE_MASK) | 55 | if (a.offset & ~PAGE_MASK) |
89 | goto out; | 56 | goto out; |
90 | 57 | ||
91 | a.flags &= ~(MAP_EXECUTABLE | MAP_DENYWRITE); | 58 | error = sys_mmap_pgoff(a.addr, a.len, a.prot, a.flags, a.fd, |
92 | 59 | a.offset >> PAGE_SHIFT); | |
93 | error = do_mmap2(a.addr, a.len, a.prot, a.flags, a.fd, a.offset >> PAGE_SHIFT); | ||
94 | out: | 60 | out: |
95 | return error; | 61 | return error; |
96 | } | 62 | } |
diff --git a/arch/m68knommu/kernel/syscalltable.S b/arch/m68knommu/kernel/syscalltable.S index 23535cc415ae..486837efa3d7 100644 --- a/arch/m68knommu/kernel/syscalltable.S +++ b/arch/m68knommu/kernel/syscalltable.S | |||
@@ -210,7 +210,7 @@ ENTRY(sys_call_table) | |||
210 | .long sys_ni_syscall /* streams2 */ | 210 | .long sys_ni_syscall /* streams2 */ |
211 | .long sys_vfork /* 190 */ | 211 | .long sys_vfork /* 190 */ |
212 | .long sys_getrlimit | 212 | .long sys_getrlimit |
213 | .long sys_mmap2 | 213 | .long sys_mmap_pgoff |
214 | .long sys_truncate64 | 214 | .long sys_truncate64 |
215 | .long sys_ftruncate64 | 215 | .long sys_ftruncate64 |
216 | .long sys_stat64 /* 195 */ | 216 | .long sys_stat64 /* 195 */ |