mm: remove compat_process_vm_{readv,writev}
authorChristoph Hellwig <hch@lst.de>
Fri, 25 Sep 2020 04:51:45 +0000 (06:51 +0200)
committerAl Viro <viro@zeniv.linux.org.uk>
Sat, 3 Oct 2020 04:02:15 +0000 (00:02 -0400)
Now that import_iovec handles compat iovecs, the native syscalls
can be used for the compat case as well.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
17 files changed:
arch/arm64/include/asm/unistd32.h
arch/mips/kernel/syscalls/syscall_n32.tbl
arch/mips/kernel/syscalls/syscall_o32.tbl
arch/parisc/kernel/syscalls/syscall.tbl
arch/powerpc/kernel/syscalls/syscall.tbl
arch/s390/kernel/syscalls/syscall.tbl
arch/sparc/kernel/syscalls/syscall.tbl
arch/x86/entry/syscall_x32.c
arch/x86/entry/syscalls/syscall_32.tbl
arch/x86/entry/syscalls/syscall_64.tbl
include/linux/compat.h
include/uapi/asm-generic/unistd.h
mm/process_vm_access.c
tools/include/uapi/asm-generic/unistd.h
tools/perf/arch/powerpc/entry/syscalls/syscall.tbl
tools/perf/arch/s390/entry/syscalls/syscall.tbl
tools/perf/arch/x86/entry/syscalls/syscall_64.tbl

index 11dfae3..0c280a0 100644 (file)
@@ -763,9 +763,9 @@ __SYSCALL(__NR_sendmmsg, compat_sys_sendmmsg)
 #define __NR_setns 375
 __SYSCALL(__NR_setns, sys_setns)
 #define __NR_process_vm_readv 376
-__SYSCALL(__NR_process_vm_readv, compat_sys_process_vm_readv)
+__SYSCALL(__NR_process_vm_readv, sys_process_vm_readv)
 #define __NR_process_vm_writev 377
-__SYSCALL(__NR_process_vm_writev, compat_sys_process_vm_writev)
+__SYSCALL(__NR_process_vm_writev, sys_process_vm_writev)
 #define __NR_kcmp 378
 __SYSCALL(__NR_kcmp, sys_kcmp)
 #define __NR_finit_module 379
index 5a39d4d..0bc2e0f 100644 (file)
 306    n32     syncfs                          sys_syncfs
 307    n32     sendmmsg                        compat_sys_sendmmsg
 308    n32     setns                           sys_setns
-309    n32     process_vm_readv                compat_sys_process_vm_readv
-310    n32     process_vm_writev               compat_sys_process_vm_writev
+309    n32     process_vm_readv                sys_process_vm_readv
+310    n32     process_vm_writev               sys_process_vm_writev
 311    n32     kcmp                            sys_kcmp
 312    n32     finit_module                    sys_finit_module
 313    n32     sched_setattr                   sys_sched_setattr
index 136efc6..b408c13 100644 (file)
 342    o32     syncfs                          sys_syncfs
 343    o32     sendmmsg                        sys_sendmmsg                    compat_sys_sendmmsg
 344    o32     setns                           sys_setns
-345    o32     process_vm_readv                sys_process_vm_readv            compat_sys_process_vm_readv
-346    o32     process_vm_writev               sys_process_vm_writev           compat_sys_process_vm_writev
+345    o32     process_vm_readv                sys_process_vm_readv
+346    o32     process_vm_writev               sys_process_vm_writev
 347    o32     kcmp                            sys_kcmp
 348    o32     finit_module                    sys_finit_module
 349    o32     sched_setattr                   sys_sched_setattr
index a9e1841..2015a51 100644 (file)
 327    common  syncfs                  sys_syncfs
 328    common  setns                   sys_setns
 329    common  sendmmsg                sys_sendmmsg                    compat_sys_sendmmsg
-330    common  process_vm_readv        sys_process_vm_readv            compat_sys_process_vm_readv
-331    common  process_vm_writev       sys_process_vm_writev           compat_sys_process_vm_writev
+330    common  process_vm_readv        sys_process_vm_readv
+331    common  process_vm_writev       sys_process_vm_writev
 332    common  kcmp                    sys_kcmp
 333    common  finit_module            sys_finit_module
 334    common  sched_setattr           sys_sched_setattr
index 0d49859..66a472a 100644 (file)
 348    common  syncfs                          sys_syncfs
 349    common  sendmmsg                        sys_sendmmsg                    compat_sys_sendmmsg
 350    common  setns                           sys_setns
-351    nospu   process_vm_readv                sys_process_vm_readv            compat_sys_process_vm_readv
-352    nospu   process_vm_writev               sys_process_vm_writev           compat_sys_process_vm_writev
+351    nospu   process_vm_readv                sys_process_vm_readv
+352    nospu   process_vm_writev               sys_process_vm_writev
 353    nospu   finit_module                    sys_finit_module
 354    nospu   kcmp                            sys_kcmp
 355    common  sched_setattr                   sys_sched_setattr
index b5495a4..7485867 100644 (file)
 337  common    clock_adjtime           sys_clock_adjtime               sys_clock_adjtime32
 338  common    syncfs                  sys_syncfs                      sys_syncfs
 339  common    setns                   sys_setns                       sys_setns
-340  common    process_vm_readv        sys_process_vm_readv            compat_sys_process_vm_readv
-341  common    process_vm_writev       sys_process_vm_writev           compat_sys_process_vm_writev
+340  common    process_vm_readv        sys_process_vm_readv            sys_process_vm_readv
+341  common    process_vm_writev       sys_process_vm_writev           sys_process_vm_writev
 342  common    s390_runtime_instr      sys_s390_runtime_instr          sys_s390_runtime_instr
 343  common    kcmp                    sys_kcmp                        sys_kcmp
 344  common    finit_module            sys_finit_module                sys_finit_module
index f1810c1..4a9365b 100644 (file)
 335    common  syncfs                  sys_syncfs
 336    common  sendmmsg                sys_sendmmsg                    compat_sys_sendmmsg
 337    common  setns                   sys_setns
-338    common  process_vm_readv        sys_process_vm_readv            compat_sys_process_vm_readv
-339    common  process_vm_writev       sys_process_vm_writev           compat_sys_process_vm_writev
+338    common  process_vm_readv        sys_process_vm_readv
+339    common  process_vm_writev       sys_process_vm_writev
 340    32      kern_features           sys_ni_syscall                  sys_kern_features
 340    64      kern_features           sys_kern_features
 341    common  kcmp                    sys_kcmp
index a4840b9..f2fe0a3 100644 (file)
@@ -17,6 +17,8 @@
 #define __x32_sys_getsockopt   __x64_sys_getsockopt
 #define __x32_sys_setsockopt   __x64_sys_setsockopt
 #define __x32_sys_vmsplice     __x64_sys_vmsplice
+#define __x32_sys_process_vm_readv     __x64_sys_process_vm_readv
+#define __x32_sys_process_vm_writev    __x64_sys_process_vm_writev
 
 #define __SYSCALL_64(nr, sym)
 
index 0fb2f17..5fbe10a 100644 (file)
 344    i386    syncfs                  sys_syncfs
 345    i386    sendmmsg                sys_sendmmsg                    compat_sys_sendmmsg
 346    i386    setns                   sys_setns
-347    i386    process_vm_readv        sys_process_vm_readv            compat_sys_process_vm_readv
-348    i386    process_vm_writev       sys_process_vm_writev           compat_sys_process_vm_writev
+347    i386    process_vm_readv        sys_process_vm_readv
+348    i386    process_vm_writev       sys_process_vm_writev
 349    i386    kcmp                    sys_kcmp
 350    i386    finit_module            sys_finit_module
 351    i386    sched_setattr           sys_sched_setattr
index 642af91..3478096 100644 (file)
 536    x32     rt_tgsigqueueinfo       compat_sys_rt_tgsigqueueinfo
 537    x32     recvmmsg                compat_sys_recvmmsg_time64
 538    x32     sendmmsg                compat_sys_sendmmsg
-539    x32     process_vm_readv        compat_sys_process_vm_readv
-540    x32     process_vm_writev       compat_sys_process_vm_writev
+539    x32     process_vm_readv        sys_process_vm_readv
+540    x32     process_vm_writev       sys_process_vm_writev
 541    x32     setsockopt              sys_setsockopt
 542    x32     getsockopt              sys_getsockopt
 543    x32     io_setup                compat_sys_io_setup
index 7c3e876..3e3d2be 100644 (file)
@@ -780,14 +780,6 @@ asmlinkage long compat_sys_open_by_handle_at(int mountdirfd,
                                             int flags);
 asmlinkage long compat_sys_sendmmsg(int fd, struct compat_mmsghdr __user *mmsg,
                                    unsigned vlen, unsigned int flags);
-asmlinkage ssize_t compat_sys_process_vm_readv(compat_pid_t pid,
-               const struct compat_iovec __user *lvec,
-               compat_ulong_t liovcnt, const struct compat_iovec __user *rvec,
-               compat_ulong_t riovcnt, compat_ulong_t flags);
-asmlinkage ssize_t compat_sys_process_vm_writev(compat_pid_t pid,
-               const struct compat_iovec __user *lvec,
-               compat_ulong_t liovcnt, const struct compat_iovec __user *rvec,
-               compat_ulong_t riovcnt, compat_ulong_t flags);
 asmlinkage long compat_sys_execveat(int dfd, const char __user *filename,
                     const compat_uptr_t __user *argv,
                     const compat_uptr_t __user *envp, int flags);
index f2dcb0d..c1dfe99 100644 (file)
@@ -727,11 +727,9 @@ __SYSCALL(__NR_setns, sys_setns)
 #define __NR_sendmmsg 269
 __SC_COMP(__NR_sendmmsg, sys_sendmmsg, compat_sys_sendmmsg)
 #define __NR_process_vm_readv 270
-__SC_COMP(__NR_process_vm_readv, sys_process_vm_readv, \
-          compat_sys_process_vm_readv)
+__SYSCALL(__NR_process_vm_readv, sys_process_vm_readv)
 #define __NR_process_vm_writev 271
-__SC_COMP(__NR_process_vm_writev, sys_process_vm_writev, \
-          compat_sys_process_vm_writev)
+__SYSCALL(__NR_process_vm_writev, sys_process_vm_writev)
 #define __NR_kcmp 272
 __SYSCALL(__NR_kcmp, sys_kcmp)
 #define __NR_finit_module 273
index 3f2156a..fd12da8 100644 (file)
 #include <linux/slab.h>
 #include <linux/syscalls.h>
 
-#ifdef CONFIG_COMPAT
-#include <linux/compat.h>
-#endif
-
 /**
  * process_vm_rw_pages - read/write pages from task specified
  * @pages: array of pointers to pages we want to copy
@@ -304,68 +300,3 @@ SYSCALL_DEFINE6(process_vm_writev, pid_t, pid,
 {
        return process_vm_rw(pid, lvec, liovcnt, rvec, riovcnt, flags, 1);
 }
-
-#ifdef CONFIG_COMPAT
-
-static ssize_t
-compat_process_vm_rw(compat_pid_t pid,
-                    const struct compat_iovec __user *lvec,
-                    unsigned long liovcnt,
-                    const struct compat_iovec __user *rvec,
-                    unsigned long riovcnt,
-                    unsigned long flags, int vm_write)
-{
-       struct iovec iovstack_l[UIO_FASTIOV];
-       struct iovec iovstack_r[UIO_FASTIOV];
-       struct iovec *iov_l = iovstack_l;
-       struct iovec *iov_r = iovstack_r;
-       struct iov_iter iter;
-       ssize_t rc = -EFAULT;
-       int dir = vm_write ? WRITE : READ;
-
-       if (flags != 0)
-               return -EINVAL;
-
-       rc = import_iovec(dir, (const struct iovec __user *)lvec, liovcnt,
-                         UIO_FASTIOV, &iov_l, &iter);
-       if (rc < 0)
-               return rc;
-       if (!iov_iter_count(&iter))
-               goto free_iov_l;
-       iov_r = iovec_from_user((const struct iovec __user *)rvec, riovcnt,
-                               UIO_FASTIOV, iovstack_r, true);
-       if (IS_ERR(iov_r)) {
-               rc = PTR_ERR(iov_r);
-               goto free_iov_l;
-       }
-       rc = process_vm_rw_core(pid, &iter, iov_r, riovcnt, flags, vm_write);
-       if (iov_r != iovstack_r)
-               kfree(iov_r);
-free_iov_l:
-       kfree(iov_l);
-       return rc;
-}
-
-COMPAT_SYSCALL_DEFINE6(process_vm_readv, compat_pid_t, pid,
-                      const struct compat_iovec __user *, lvec,
-                      compat_ulong_t, liovcnt,
-                      const struct compat_iovec __user *, rvec,
-                      compat_ulong_t, riovcnt,
-                      compat_ulong_t, flags)
-{
-       return compat_process_vm_rw(pid, lvec, liovcnt, rvec,
-                                   riovcnt, flags, 0);
-}
-
-COMPAT_SYSCALL_DEFINE6(process_vm_writev, compat_pid_t, pid,
-                      const struct compat_iovec __user *, lvec,
-                      compat_ulong_t, liovcnt,
-                      const struct compat_iovec __user *, rvec,
-                      compat_ulong_t, riovcnt,
-                      compat_ulong_t, flags)
-{
-       return compat_process_vm_rw(pid, lvec, liovcnt, rvec,
-                                   riovcnt, flags, 1);
-}
-
-#endif
index f2dcb0d..c1dfe99 100644 (file)
@@ -727,11 +727,9 @@ __SYSCALL(__NR_setns, sys_setns)
 #define __NR_sendmmsg 269
 __SC_COMP(__NR_sendmmsg, sys_sendmmsg, compat_sys_sendmmsg)
 #define __NR_process_vm_readv 270
-__SC_COMP(__NR_process_vm_readv, sys_process_vm_readv, \
-          compat_sys_process_vm_readv)
+__SYSCALL(__NR_process_vm_readv, sys_process_vm_readv)
 #define __NR_process_vm_writev 271
-__SC_COMP(__NR_process_vm_writev, sys_process_vm_writev, \
-          compat_sys_process_vm_writev)
+__SYSCALL(__NR_process_vm_writev, sys_process_vm_writev)
 #define __NR_kcmp 272
 __SYSCALL(__NR_kcmp, sys_kcmp)
 #define __NR_finit_module 273
index 26f0347..a188f05 100644 (file)
 348    common  syncfs                          sys_syncfs
 349    common  sendmmsg                        sys_sendmmsg                    compat_sys_sendmmsg
 350    common  setns                           sys_setns
-351    nospu   process_vm_readv                sys_process_vm_readv            compat_sys_process_vm_readv
-352    nospu   process_vm_writev               sys_process_vm_writev           compat_sys_process_vm_writev
+351    nospu   process_vm_readv                sys_process_vm_readv
+352    nospu   process_vm_writev               sys_process_vm_writev
 353    nospu   finit_module                    sys_finit_module
 354    nospu   kcmp                            sys_kcmp
 355    common  sched_setattr                   sys_sched_setattr
index 02ad81f..c44c830 100644 (file)
 337  common    clock_adjtime           sys_clock_adjtime               compat_sys_clock_adjtime
 338  common    syncfs                  sys_syncfs                      sys_syncfs
 339  common    setns                   sys_setns                       sys_setns
-340  common    process_vm_readv        sys_process_vm_readv            compat_sys_process_vm_readv
-341  common    process_vm_writev       sys_process_vm_writev           compat_sys_process_vm_writev
+340  common    process_vm_readv        sys_process_vm_readv            sys_process_vm_readv
+341  common    process_vm_writev       sys_process_vm_writev           sys_process_vm_writev
 342  common    s390_runtime_instr      sys_s390_runtime_instr          sys_s390_runtime_instr
 343  common    kcmp                    sys_kcmp                        compat_sys_kcmp
 344  common    finit_module            sys_finit_module                compat_sys_finit_module
index 642af91..3478096 100644 (file)
 536    x32     rt_tgsigqueueinfo       compat_sys_rt_tgsigqueueinfo
 537    x32     recvmmsg                compat_sys_recvmmsg_time64
 538    x32     sendmmsg                compat_sys_sendmmsg
-539    x32     process_vm_readv        compat_sys_process_vm_readv
-540    x32     process_vm_writev       compat_sys_process_vm_writev
+539    x32     process_vm_readv        sys_process_vm_readv
+540    x32     process_vm_writev       sys_process_vm_writev
 541    x32     setsockopt              sys_setsockopt
 542    x32     getsockopt              sys_getsockopt
 543    x32     io_setup                compat_sys_io_setup