Commit c3973b40 authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Al Viro

mm: remove compat_process_vm_{readv,writev}

Now that import_iovec handles compat iovecs, the native syscalls
can be used for the compat case as well.
Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent 598b3cec
...@@ -763,9 +763,9 @@ __SYSCALL(__NR_sendmmsg, compat_sys_sendmmsg) ...@@ -763,9 +763,9 @@ __SYSCALL(__NR_sendmmsg, compat_sys_sendmmsg)
#define __NR_setns 375 #define __NR_setns 375
__SYSCALL(__NR_setns, sys_setns) __SYSCALL(__NR_setns, sys_setns)
#define __NR_process_vm_readv 376 #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 #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 #define __NR_kcmp 378
__SYSCALL(__NR_kcmp, sys_kcmp) __SYSCALL(__NR_kcmp, sys_kcmp)
#define __NR_finit_module 379 #define __NR_finit_module 379
......
...@@ -317,8 +317,8 @@ ...@@ -317,8 +317,8 @@
306 n32 syncfs sys_syncfs 306 n32 syncfs sys_syncfs
307 n32 sendmmsg compat_sys_sendmmsg 307 n32 sendmmsg compat_sys_sendmmsg
308 n32 setns sys_setns 308 n32 setns sys_setns
309 n32 process_vm_readv compat_sys_process_vm_readv 309 n32 process_vm_readv sys_process_vm_readv
310 n32 process_vm_writev compat_sys_process_vm_writev 310 n32 process_vm_writev sys_process_vm_writev
311 n32 kcmp sys_kcmp 311 n32 kcmp sys_kcmp
312 n32 finit_module sys_finit_module 312 n32 finit_module sys_finit_module
313 n32 sched_setattr sys_sched_setattr 313 n32 sched_setattr sys_sched_setattr
......
...@@ -356,8 +356,8 @@ ...@@ -356,8 +356,8 @@
342 o32 syncfs sys_syncfs 342 o32 syncfs sys_syncfs
343 o32 sendmmsg sys_sendmmsg compat_sys_sendmmsg 343 o32 sendmmsg sys_sendmmsg compat_sys_sendmmsg
344 o32 setns sys_setns 344 o32 setns sys_setns
345 o32 process_vm_readv sys_process_vm_readv compat_sys_process_vm_readv 345 o32 process_vm_readv sys_process_vm_readv
346 o32 process_vm_writev sys_process_vm_writev compat_sys_process_vm_writev 346 o32 process_vm_writev sys_process_vm_writev
347 o32 kcmp sys_kcmp 347 o32 kcmp sys_kcmp
348 o32 finit_module sys_finit_module 348 o32 finit_module sys_finit_module
349 o32 sched_setattr sys_sched_setattr 349 o32 sched_setattr sys_sched_setattr
......
...@@ -372,8 +372,8 @@ ...@@ -372,8 +372,8 @@
327 common syncfs sys_syncfs 327 common syncfs sys_syncfs
328 common setns sys_setns 328 common setns sys_setns
329 common sendmmsg sys_sendmmsg compat_sys_sendmmsg 329 common sendmmsg sys_sendmmsg compat_sys_sendmmsg
330 common process_vm_readv sys_process_vm_readv compat_sys_process_vm_readv 330 common process_vm_readv sys_process_vm_readv
331 common process_vm_writev sys_process_vm_writev compat_sys_process_vm_writev 331 common process_vm_writev sys_process_vm_writev
332 common kcmp sys_kcmp 332 common kcmp sys_kcmp
333 common finit_module sys_finit_module 333 common finit_module sys_finit_module
334 common sched_setattr sys_sched_setattr 334 common sched_setattr sys_sched_setattr
......
...@@ -449,8 +449,8 @@ ...@@ -449,8 +449,8 @@
348 common syncfs sys_syncfs 348 common syncfs sys_syncfs
349 common sendmmsg sys_sendmmsg compat_sys_sendmmsg 349 common sendmmsg sys_sendmmsg compat_sys_sendmmsg
350 common setns sys_setns 350 common setns sys_setns
351 nospu process_vm_readv sys_process_vm_readv compat_sys_process_vm_readv 351 nospu process_vm_readv sys_process_vm_readv
352 nospu process_vm_writev sys_process_vm_writev compat_sys_process_vm_writev 352 nospu process_vm_writev sys_process_vm_writev
353 nospu finit_module sys_finit_module 353 nospu finit_module sys_finit_module
354 nospu kcmp sys_kcmp 354 nospu kcmp sys_kcmp
355 common sched_setattr sys_sched_setattr 355 common sched_setattr sys_sched_setattr
......
...@@ -347,8 +347,8 @@ ...@@ -347,8 +347,8 @@
337 common clock_adjtime sys_clock_adjtime sys_clock_adjtime32 337 common clock_adjtime sys_clock_adjtime sys_clock_adjtime32
338 common syncfs sys_syncfs sys_syncfs 338 common syncfs sys_syncfs sys_syncfs
339 common setns sys_setns sys_setns 339 common setns sys_setns sys_setns
340 common process_vm_readv sys_process_vm_readv compat_sys_process_vm_readv 340 common process_vm_readv sys_process_vm_readv sys_process_vm_readv
341 common process_vm_writev sys_process_vm_writev compat_sys_process_vm_writev 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 342 common s390_runtime_instr sys_s390_runtime_instr sys_s390_runtime_instr
343 common kcmp sys_kcmp sys_kcmp 343 common kcmp sys_kcmp sys_kcmp
344 common finit_module sys_finit_module sys_finit_module 344 common finit_module sys_finit_module sys_finit_module
......
...@@ -406,8 +406,8 @@ ...@@ -406,8 +406,8 @@
335 common syncfs sys_syncfs 335 common syncfs sys_syncfs
336 common sendmmsg sys_sendmmsg compat_sys_sendmmsg 336 common sendmmsg sys_sendmmsg compat_sys_sendmmsg
337 common setns sys_setns 337 common setns sys_setns
338 common process_vm_readv sys_process_vm_readv compat_sys_process_vm_readv 338 common process_vm_readv sys_process_vm_readv
339 common process_vm_writev sys_process_vm_writev compat_sys_process_vm_writev 339 common process_vm_writev sys_process_vm_writev
340 32 kern_features sys_ni_syscall sys_kern_features 340 32 kern_features sys_ni_syscall sys_kern_features
340 64 kern_features sys_kern_features 340 64 kern_features sys_kern_features
341 common kcmp sys_kcmp 341 common kcmp sys_kcmp
......
...@@ -17,6 +17,8 @@ ...@@ -17,6 +17,8 @@
#define __x32_sys_getsockopt __x64_sys_getsockopt #define __x32_sys_getsockopt __x64_sys_getsockopt
#define __x32_sys_setsockopt __x64_sys_setsockopt #define __x32_sys_setsockopt __x64_sys_setsockopt
#define __x32_sys_vmsplice __x64_sys_vmsplice #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) #define __SYSCALL_64(nr, sym)
......
...@@ -358,8 +358,8 @@ ...@@ -358,8 +358,8 @@
344 i386 syncfs sys_syncfs 344 i386 syncfs sys_syncfs
345 i386 sendmmsg sys_sendmmsg compat_sys_sendmmsg 345 i386 sendmmsg sys_sendmmsg compat_sys_sendmmsg
346 i386 setns sys_setns 346 i386 setns sys_setns
347 i386 process_vm_readv sys_process_vm_readv compat_sys_process_vm_readv 347 i386 process_vm_readv sys_process_vm_readv
348 i386 process_vm_writev sys_process_vm_writev compat_sys_process_vm_writev 348 i386 process_vm_writev sys_process_vm_writev
349 i386 kcmp sys_kcmp 349 i386 kcmp sys_kcmp
350 i386 finit_module sys_finit_module 350 i386 finit_module sys_finit_module
351 i386 sched_setattr sys_sched_setattr 351 i386 sched_setattr sys_sched_setattr
......
...@@ -395,8 +395,8 @@ ...@@ -395,8 +395,8 @@
536 x32 rt_tgsigqueueinfo compat_sys_rt_tgsigqueueinfo 536 x32 rt_tgsigqueueinfo compat_sys_rt_tgsigqueueinfo
537 x32 recvmmsg compat_sys_recvmmsg_time64 537 x32 recvmmsg compat_sys_recvmmsg_time64
538 x32 sendmmsg compat_sys_sendmmsg 538 x32 sendmmsg compat_sys_sendmmsg
539 x32 process_vm_readv compat_sys_process_vm_readv 539 x32 process_vm_readv sys_process_vm_readv
540 x32 process_vm_writev compat_sys_process_vm_writev 540 x32 process_vm_writev sys_process_vm_writev
541 x32 setsockopt sys_setsockopt 541 x32 setsockopt sys_setsockopt
542 x32 getsockopt sys_getsockopt 542 x32 getsockopt sys_getsockopt
543 x32 io_setup compat_sys_io_setup 543 x32 io_setup compat_sys_io_setup
......
...@@ -780,14 +780,6 @@ asmlinkage long compat_sys_open_by_handle_at(int mountdirfd, ...@@ -780,14 +780,6 @@ asmlinkage long compat_sys_open_by_handle_at(int mountdirfd,
int flags); int flags);
asmlinkage long compat_sys_sendmmsg(int fd, struct compat_mmsghdr __user *mmsg, asmlinkage long compat_sys_sendmmsg(int fd, struct compat_mmsghdr __user *mmsg,
unsigned vlen, unsigned int flags); 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, asmlinkage long compat_sys_execveat(int dfd, const char __user *filename,
const compat_uptr_t __user *argv, const compat_uptr_t __user *argv,
const compat_uptr_t __user *envp, int flags); const compat_uptr_t __user *envp, int flags);
......
...@@ -727,11 +727,9 @@ __SYSCALL(__NR_setns, sys_setns) ...@@ -727,11 +727,9 @@ __SYSCALL(__NR_setns, sys_setns)
#define __NR_sendmmsg 269 #define __NR_sendmmsg 269
__SC_COMP(__NR_sendmmsg, sys_sendmmsg, compat_sys_sendmmsg) __SC_COMP(__NR_sendmmsg, sys_sendmmsg, compat_sys_sendmmsg)
#define __NR_process_vm_readv 270 #define __NR_process_vm_readv 270
__SC_COMP(__NR_process_vm_readv, sys_process_vm_readv, \ __SYSCALL(__NR_process_vm_readv, sys_process_vm_readv)
compat_sys_process_vm_readv)
#define __NR_process_vm_writev 271 #define __NR_process_vm_writev 271
__SC_COMP(__NR_process_vm_writev, sys_process_vm_writev, \ __SYSCALL(__NR_process_vm_writev, sys_process_vm_writev)
compat_sys_process_vm_writev)
#define __NR_kcmp 272 #define __NR_kcmp 272
__SYSCALL(__NR_kcmp, sys_kcmp) __SYSCALL(__NR_kcmp, sys_kcmp)
#define __NR_finit_module 273 #define __NR_finit_module 273
......
...@@ -14,10 +14,6 @@ ...@@ -14,10 +14,6 @@
#include <linux/slab.h> #include <linux/slab.h>
#include <linux/syscalls.h> #include <linux/syscalls.h>
#ifdef CONFIG_COMPAT
#include <linux/compat.h>
#endif
/** /**
* process_vm_rw_pages - read/write pages from task specified * process_vm_rw_pages - read/write pages from task specified
* @pages: array of pointers to pages we want to copy * @pages: array of pointers to pages we want to copy
...@@ -304,68 +300,3 @@ SYSCALL_DEFINE6(process_vm_writev, pid_t, pid, ...@@ -304,68 +300,3 @@ SYSCALL_DEFINE6(process_vm_writev, pid_t, pid,
{ {
return process_vm_rw(pid, lvec, liovcnt, rvec, riovcnt, flags, 1); 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
...@@ -727,11 +727,9 @@ __SYSCALL(__NR_setns, sys_setns) ...@@ -727,11 +727,9 @@ __SYSCALL(__NR_setns, sys_setns)
#define __NR_sendmmsg 269 #define __NR_sendmmsg 269
__SC_COMP(__NR_sendmmsg, sys_sendmmsg, compat_sys_sendmmsg) __SC_COMP(__NR_sendmmsg, sys_sendmmsg, compat_sys_sendmmsg)
#define __NR_process_vm_readv 270 #define __NR_process_vm_readv 270
__SC_COMP(__NR_process_vm_readv, sys_process_vm_readv, \ __SYSCALL(__NR_process_vm_readv, sys_process_vm_readv)
compat_sys_process_vm_readv)
#define __NR_process_vm_writev 271 #define __NR_process_vm_writev 271
__SC_COMP(__NR_process_vm_writev, sys_process_vm_writev, \ __SYSCALL(__NR_process_vm_writev, sys_process_vm_writev)
compat_sys_process_vm_writev)
#define __NR_kcmp 272 #define __NR_kcmp 272
__SYSCALL(__NR_kcmp, sys_kcmp) __SYSCALL(__NR_kcmp, sys_kcmp)
#define __NR_finit_module 273 #define __NR_finit_module 273
......
...@@ -443,8 +443,8 @@ ...@@ -443,8 +443,8 @@
348 common syncfs sys_syncfs 348 common syncfs sys_syncfs
349 common sendmmsg sys_sendmmsg compat_sys_sendmmsg 349 common sendmmsg sys_sendmmsg compat_sys_sendmmsg
350 common setns sys_setns 350 common setns sys_setns
351 nospu process_vm_readv sys_process_vm_readv compat_sys_process_vm_readv 351 nospu process_vm_readv sys_process_vm_readv
352 nospu process_vm_writev sys_process_vm_writev compat_sys_process_vm_writev 352 nospu process_vm_writev sys_process_vm_writev
353 nospu finit_module sys_finit_module 353 nospu finit_module sys_finit_module
354 nospu kcmp sys_kcmp 354 nospu kcmp sys_kcmp
355 common sched_setattr sys_sched_setattr 355 common sched_setattr sys_sched_setattr
......
...@@ -347,8 +347,8 @@ ...@@ -347,8 +347,8 @@
337 common clock_adjtime sys_clock_adjtime compat_sys_clock_adjtime 337 common clock_adjtime sys_clock_adjtime compat_sys_clock_adjtime
338 common syncfs sys_syncfs sys_syncfs 338 common syncfs sys_syncfs sys_syncfs
339 common setns sys_setns sys_setns 339 common setns sys_setns sys_setns
340 common process_vm_readv sys_process_vm_readv compat_sys_process_vm_readv 340 common process_vm_readv sys_process_vm_readv sys_process_vm_readv
341 common process_vm_writev sys_process_vm_writev compat_sys_process_vm_writev 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 342 common s390_runtime_instr sys_s390_runtime_instr sys_s390_runtime_instr
343 common kcmp sys_kcmp compat_sys_kcmp 343 common kcmp sys_kcmp compat_sys_kcmp
344 common finit_module sys_finit_module compat_sys_finit_module 344 common finit_module sys_finit_module compat_sys_finit_module
......
...@@ -395,8 +395,8 @@ ...@@ -395,8 +395,8 @@
536 x32 rt_tgsigqueueinfo compat_sys_rt_tgsigqueueinfo 536 x32 rt_tgsigqueueinfo compat_sys_rt_tgsigqueueinfo
537 x32 recvmmsg compat_sys_recvmmsg_time64 537 x32 recvmmsg compat_sys_recvmmsg_time64
538 x32 sendmmsg compat_sys_sendmmsg 538 x32 sendmmsg compat_sys_sendmmsg
539 x32 process_vm_readv compat_sys_process_vm_readv 539 x32 process_vm_readv sys_process_vm_readv
540 x32 process_vm_writev compat_sys_process_vm_writev 540 x32 process_vm_writev sys_process_vm_writev
541 x32 setsockopt sys_setsockopt 541 x32 setsockopt sys_setsockopt
542 x32 getsockopt sys_getsockopt 542 x32 getsockopt sys_getsockopt
543 x32 io_setup compat_sys_io_setup 543 x32 io_setup compat_sys_io_setup
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment