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 11dfae3a8563bd15ac21098c747f5ec8a32d6bbc..0c280a05f699bfbbae38248349eb065e69384b7e 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 5a39d4de0ac85b0349838f8497734271d094f7a7..0bc2e0fcf1ee564b47fab9f7096ef7778f4df5be 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 136efc6b8c544483558c525a274e21db85f9e760..b408c13b934296acfec8252e39e61224302cd67d 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 a9e184192caeddeb2da9c5dc9b442282830c9f1d..2015a5124b78ade9a541821265fbd760173a3e2d 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 0d4985919ca34d027b04e83a657d7aba92d942e7..66a472aa635d3fb5429d313c53b3878a2e3c77bb 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 b5495a42814bd179947c83a536dc0440e5c4c3db..7485867a490bb2055172a5ae2bdefb033a6f5b1b 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 f1810c1a35caa51488d270af6b56509151758cb4..4a9365b2e340b262262ccf1221ebc58b457a6fa5 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 a4840b9d50ad14b06b0e13da678c6f4c951ad92b..f2fe0a33bcfdd5528547686bca20ee65068fc68e 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 0fb2f172581e51a45aacea2782c745daf6f05f0a..5fbe10ad8a23fca13e858ad31bce1dbb2e69ea60 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 642af919183de4310fe454ba8862ba1f5f0187ca..347809649ba28fa15be86511d563ff9d427ecaea 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 7c3e876703cff5d4bc48ab57da0f884153560ebc..3e3d2beafed312d1c8fe85a89bfa96f42d50efd7 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 f2dcb0d5703014a8ed621c94f846aa9ee729c8fb..c1dfe99c9c3f70f6c1e317eff84808640e3d29fc 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 3f2156aab4426369f864bc21b0c3d371017a53f1..fd12da80b6f27bab90763d9cca7c43d38f226b06 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 f2dcb0d5703014a8ed621c94f846aa9ee729c8fb..c1dfe99c9c3f70f6c1e317eff84808640e3d29fc 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 26f0347c15118bd416d521926378d5233a25a002..a188f053cbf90a45db8476ca1f9ed2fe5e582c25 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 02ad81f69bb7e3f2439e22a074c21d2a411cdcf8..c44c83032c3a04dfd75e0c3decdd977577d6bcf5 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 642af919183de4310fe454ba8862ba1f5f0187ca..347809649ba28fa15be86511d563ff9d427ecaea 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