Re: [PATCH 13/19] Unify sys_mmap*

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Dec 7, 2009 at 04:54, Al Viro <viro@xxxxxxxxxxxxxxxx> wrote:

New helper - sys_mmap_pgoff(); switch syscalls to using it.

Signed-off-by: Al Viro <viro@xxxxxxxxxxxxxxxxxx>
---
 arch/alpha/kernel/osf_sys.c               |   19 ++-----
 arch/arm/kernel/entry-common.S            |    4 +-
 arch/arm/kernel/sys_arm.c                 |   30 +----------
 arch/avr32/include/asm/syscalls.h         |    4 --
 arch/avr32/kernel/sys_avr32.c             |   31 -----------
 arch/avr32/kernel/syscall-stubs.S         |    2 +-
 arch/blackfin/kernel/sys_bfin.c           |   33 -----------
 arch/blackfin/mach-common/entry.S         |    2 +-
 arch/cris/kernel/sys_cris.c               |   30 +---------
 arch/frv/kernel/sys_frv.c                 |   66 +----------------------
 arch/h8300/kernel/sys_h8300.c             |   83 +----------------------------
 arch/h8300/kernel/syscalls.S              |    2 +-
 arch/ia64/kernel/sys_ia64.c               |   37 +------------
 arch/m32r/kernel/sys_m32r.c               |   24 --------
 arch/m32r/kernel/syscall_table.S          |    2 +-
 arch/m68k/kernel/sys_m68k.c               |   79 ++--------------------------
 arch/m68knommu/kernel/sys_m68k.c          |   38 +------------
 arch/m68knommu/kernel/syscalltable.S      |    2 +-
 arch/microblaze/kernel/sys_microblaze.c   |   38 +------------
 arch/microblaze/kernel/syscall_table.S    |    2 +-
 arch/mips/kernel/linux32.c                |   19 +------
 arch/mips/kernel/syscall.c                |   29 +---------
 arch/mn10300/kernel/entry.S               |    2 +-
 arch/mn10300/kernel/sys_mn10300.c         |   31 +----------
 arch/parisc/kernel/sys_parisc.c           |   30 ++---------
 arch/powerpc/kernel/syscalls.c            |   15 +-----
 arch/s390/kernel/compat_linux.c           |   32 +----------
 arch/s390/kernel/sys_s390.c               |   30 +----------
 arch/score/kernel/sys_score.c             |   21 +------
 arch/sh/kernel/sys_sh.c                   |   28 +---------
 arch/sparc/kernel/sys_sparc_32.c          |   31 ++---------
 arch/sparc/kernel/sys_sparc_64.c          |   22 ++------
 arch/um/kernel/syscall.c                  |   28 +---------
 arch/um/sys-i386/shared/sysdep/syscalls.h |    4 --
 arch/x86/ia32/ia32entry.S                 |    2 +-
 arch/x86/ia32/sys_ia32.c                  |   43 +---------------
 arch/x86/include/asm/sys_ia32.h           |    3 -
 arch/x86/include/asm/syscalls.h           |    2 -
 arch/x86/kernel/sys_i386_32.c             |   27 +---------
 arch/x86/kernel/sys_x86_64.c              |   17 +------
 arch/x86/kernel/syscall_table_32.S        |    2 +-
 arch/xtensa/include/asm/syscall.h         |    2 -
 arch/xtensa/include/asm/unistd.h          |    2 +-
 arch/xtensa/kernel/syscall.c              |   25 ---------
 include/linux/syscalls.h                  |    4 ++
 mm/util.c                                 |   29 ++++++++++
 46 files changed, 105 insertions(+), 903 deletions(-)


diff --git a/arch/m68k/kernel/sys_m68k.c b/arch/m68k/kernel/sys_m68k.c
index 7deb402..fdab0f0 100644
--- a/arch/m68k/kernel/sys_m68k.c
+++ b/arch/m68k/kernel/sys_m68k.c
@@ -29,37 +29,12 @@
 #include <asm/page.h>
 #include <asm/unistd.h>

-/* common code for old and new mmaps */
-static inline long do_mmap2(
-       unsigned long addr, unsigned long len,
-       unsigned long prot, unsigned long flags,
-       unsigned long fd, unsigned long pgoff)
-{
-       int error = -EBADF;
-       struct file * file = NULL;
-
-       flags &= ~(MAP_EXECUTABLE | MAP_DENYWRITE);
-       if (!(flags & MAP_ANONYMOUS)) {
-               file = fget(fd);
-               if (!file)
-                       goto out;
-       }
-
-       down_write(&current->mm->mmap_sem);
-       error = do_mmap_pgoff(file, addr, len, prot, flags, pgoff);
-       up_write(&current->mm->mmap_sem);
-
-       if (file)
-               fput(file);
-out:
-       return error;
-}
-
 asmlinkage long sys_mmap2(unsigned long addr, unsigned long len,
       unsigned long prot, unsigned long flags,
       unsigned long fd, unsigned long pgoff)
 {
-       return do_mmap2(addr, len, prot, flags, fd, pgoff);
+       /* this is wrong for sun3, BTW */

Can you please add the why part to the comment?
Thanks!

+       return sys_mmap_pgoff(addr, len, prot, flags, fd, pgoff);
 }

 /*
@@ -90,57 +65,11 @@ asmlinkage int old_mmap(struct mmap_arg_struct __user *arg)
       if (a.offset & ~PAGE_MASK)
               goto out;

-       a.flags &= ~(MAP_EXECUTABLE | MAP_DENYWRITE);
-
-       error = do_mmap2(a.addr, a.len, a.prot, a.flags, a.fd, a.offset >> PAGE_SHIFT);
-out:
-       return error;
-}
-
-#if 0
-struct mmap_arg_struct64 {
-       __u32 addr;
-       __u32 len;
-       __u32 prot;
-       __u32 flags;
-       __u64 offset; /* 64 bits */
-       __u32 fd;
-};
-
-asmlinkage long sys_mmap64(struct mmap_arg_struct64 *arg)
-{
-       int error = -EFAULT;
-       struct file * file = NULL;
-       struct mmap_arg_struct64 a;
-       unsigned long pgoff;
-
-       if (copy_from_user(&a, arg, sizeof(a)))
-               return -EFAULT;
-
-       if ((long)a.offset & ~PAGE_MASK)
-               return -EINVAL;
-
-       pgoff = a.offset >> PAGE_SHIFT;
-       if ((a.offset >> PAGE_SHIFT) != pgoff)
-               return -EINVAL;
-
-       if (!(a.flags & MAP_ANONYMOUS)) {
-               error = -EBADF;
-               file = fget(a.fd);
-               if (!file)
-                       goto out;
-       }
-       a.flags &= ~(MAP_EXECUTABLE | MAP_DENYWRITE);
-
-       down_write(&current->mm->mmap_sem);
-       error = do_mmap_pgoff(file, a.addr, a.len, a.prot, a.flags, pgoff);
-       up_write(&current->mm->mmap_sem);
-       if (file)
-               fput(file);
+       error = sys_mmap_pgoff(a.addr, a.len, a.prot, a.flags, a.fd,
+                              a.offset >> PAGE_SHIFT);
 out:
       return error;
 }
-#endif

 struct sel_arg_struct {
       unsigned long n;

Gr{oetje,eeting}s,

						Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
							    -- Linus Torvalds
��.n��������+%������w��{.n�����{��n����ܨ}���Ơz�j:+v�����w����ޙ��&�)ߡ�a����z�ޗ���ݢj��w�f


[Index of Archives]     [Video for Linux]     [Yosemite News]     [Linux S/390]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux