aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHeiko Carstens <heiko.carstens@de.ibm.com>2014-02-26 08:40:43 -0500
committerHeiko Carstens <heiko.carstens@de.ibm.com>2014-03-04 03:05:38 -0500
commit5383d2c8b3ee61a762043818d7c07bbc0049b031 (patch)
tree00684571c741f1ba6c750386401dbb590130c768
parenta0f8c6da8f3da63283e978ebece03e81d107b1d0 (diff)
s390/compat: convert to COMPAT_SYSCALL_DEFINEx part 7
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
-rw-r--r--arch/s390/kernel/compat_linux.c12
-rw-r--r--arch/s390/kernel/compat_linux.h11
-rw-r--r--arch/s390/kernel/compat_wrapper.S24
-rw-r--r--arch/s390/kernel/syscalls.S8
4 files changed, 13 insertions, 42 deletions
diff --git a/arch/s390/kernel/compat_linux.c b/arch/s390/kernel/compat_linux.c
index 861427fc0329..59097741f509 100644
--- a/arch/s390/kernel/compat_linux.c
+++ b/arch/s390/kernel/compat_linux.c
@@ -454,7 +454,7 @@ COMPAT_SYSCALL_DEFINE1(s390_mmap2, struct mmap_arg_struct_emu31 __user *, arg)
454 return sys_mmap_pgoff(a.addr, a.len, a.prot, a.flags, a.fd, a.offset); 454 return sys_mmap_pgoff(a.addr, a.len, a.prot, a.flags, a.fd, a.offset);
455} 455}
456 456
457asmlinkage long sys32_read(unsigned int fd, char __user * buf, size_t count) 457COMPAT_SYSCALL_DEFINE3(s390_read, unsigned int, fd, char __user *, buf, compat_size_t, count)
458{ 458{
459 if ((compat_ssize_t) count < 0) 459 if ((compat_ssize_t) count < 0)
460 return -EINVAL; 460 return -EINVAL;
@@ -462,7 +462,7 @@ asmlinkage long sys32_read(unsigned int fd, char __user * buf, size_t count)
462 return sys_read(fd, buf, count); 462 return sys_read(fd, buf, count);
463} 463}
464 464
465asmlinkage long sys32_write(unsigned int fd, const char __user * buf, size_t count) 465COMPAT_SYSCALL_DEFINE3(s390_write, unsigned int, fd, const char __user *, buf, compat_size_t, count)
466{ 466{
467 if ((compat_ssize_t) count < 0) 467 if ((compat_ssize_t) count < 0)
468 return -EINVAL; 468 return -EINVAL;
@@ -476,14 +476,13 @@ asmlinkage long sys32_write(unsigned int fd, const char __user * buf, size_t cou
476 * because the 31 bit values differ from the 64 bit values. 476 * because the 31 bit values differ from the 64 bit values.
477 */ 477 */
478 478
479asmlinkage long 479COMPAT_SYSCALL_DEFINE5(s390_fadvise64, int, fd, u32, high, u32, low, compat_size_t, len, int, advise)
480sys32_fadvise64(int fd, loff_t offset, size_t len, int advise)
481{ 480{
482 if (advise == 4) 481 if (advise == 4)
483 advise = POSIX_FADV_DONTNEED; 482 advise = POSIX_FADV_DONTNEED;
484 else if (advise == 5) 483 else if (advise == 5)
485 advise = POSIX_FADV_NOREUSE; 484 advise = POSIX_FADV_NOREUSE;
486 return sys_fadvise64(fd, offset, len, advise); 485 return sys_fadvise64(fd, (unsigned long)high << 32 | low, len, advise);
487} 486}
488 487
489struct fadvise64_64_args { 488struct fadvise64_64_args {
@@ -493,8 +492,7 @@ struct fadvise64_64_args {
493 int advice; 492 int advice;
494}; 493};
495 494
496asmlinkage long 495COMPAT_SYSCALL_DEFINE1(s390_fadvise64_64, struct fadvise64_64_args __user *, args)
497sys32_fadvise64_64(struct fadvise64_64_args __user *args)
498{ 496{
499 struct fadvise64_64_args a; 497 struct fadvise64_64_args a;
500 498
diff --git a/arch/s390/kernel/compat_linux.h b/arch/s390/kernel/compat_linux.h
index 7e7afb91252c..7d2ce4bb84a6 100644
--- a/arch/s390/kernel/compat_linux.h
+++ b/arch/s390/kernel/compat_linux.h
@@ -97,9 +97,6 @@ long compat_sys_s390_getgid16(void);
97long compat_sys_s390_getegid16(void); 97long compat_sys_s390_getegid16(void);
98long compat_sys_s390_truncate64(const char __user *path, u32 high, u32 low); 98long compat_sys_s390_truncate64(const char __user *path, u32 high, u32 low);
99long compat_sys_s390_ftruncate64(unsigned int fd, u32 high, u32 low); 99long compat_sys_s390_ftruncate64(unsigned int fd, u32 high, u32 low);
100long sys32_init_module(void __user *umod, unsigned long len,
101 const char __user *uargs);
102long sys32_delete_module(const char __user *name_user, unsigned int flags);
103long compat_sys_s390_pread64(unsigned int fd, char __user *ubuf, compat_size_t count, u32 high, u32 low); 100long compat_sys_s390_pread64(unsigned int fd, char __user *ubuf, compat_size_t count, u32 high, u32 low);
104long compat_sys_s390_pwrite64(unsigned int fd, const char __user *ubuf, compat_size_t count, u32 high, u32 low); 101long compat_sys_s390_pwrite64(unsigned int fd, const char __user *ubuf, compat_size_t count, u32 high, u32 low);
105long compat_sys_s390_readahead(int fd, u32 high, u32 low, s32 count); 102long compat_sys_s390_readahead(int fd, u32 high, u32 low, s32 count);
@@ -109,8 +106,8 @@ long compat_sys_s390_fstat64(unsigned int fd, struct stat64_emu31 __user *statbu
109long compat_sys_s390_fstatat64(unsigned int dfd, const char __user *filename, struct stat64_emu31 __user *statbuf, int flag); 106long compat_sys_s390_fstatat64(unsigned int dfd, const char __user *filename, struct stat64_emu31 __user *statbuf, int flag);
110long compat_sys_s390_old_mmap(struct mmap_arg_struct_emu31 __user *arg); 107long compat_sys_s390_old_mmap(struct mmap_arg_struct_emu31 __user *arg);
111long compat_sys_s390_mmap2(struct mmap_arg_struct_emu31 __user *arg); 108long compat_sys_s390_mmap2(struct mmap_arg_struct_emu31 __user *arg);
112long sys32_read(unsigned int fd, char __user * buf, size_t count); 109long compat_sys_s390_read(unsigned int fd, char __user * buf, compat_size_t count);
113long sys32_write(unsigned int fd, const char __user * buf, size_t count); 110long compat_sys_s390_write(unsigned int fd, const char __user * buf, compat_size_t count);
114long sys32_fadvise64(int fd, loff_t offset, size_t len, int advise); 111long compat_sys_s390_fadvise64(int fd, u32 high, u32 low, compat_size_t len, int advise);
115long sys32_fadvise64_64(struct fadvise64_64_args __user *args); 112long compat_sys_s390_fadvise64_64(struct fadvise64_64_args __user *args);
116#endif /* _ASM_S390X_S390_H */ 113#endif /* _ASM_S390X_S390_H */
diff --git a/arch/s390/kernel/compat_wrapper.S b/arch/s390/kernel/compat_wrapper.S
index c8ac063398bb..16ce71880cbd 100644
--- a/arch/s390/kernel/compat_wrapper.S
+++ b/arch/s390/kernel/compat_wrapper.S
@@ -12,18 +12,6 @@ ENTRY(sys32_exit_wrapper)
12 lgfr %r2,%r2 # int 12 lgfr %r2,%r2 # int
13 jg sys_exit # branch to sys_exit 13 jg sys_exit # branch to sys_exit
14 14
15ENTRY(sys32_read_wrapper)
16 llgfr %r2,%r2 # unsigned int
17 llgtr %r3,%r3 # char *
18 llgfr %r4,%r4 # size_t
19 jg sys32_read # branch to sys_read
20
21ENTRY(sys32_write_wrapper)
22 llgfr %r2,%r2 # unsigned int
23 llgtr %r3,%r3 # const char *
24 llgfr %r4,%r4 # size_t
25 jg sys32_write # branch to system call
26
27ENTRY(sys32_close_wrapper) 15ENTRY(sys32_close_wrapper)
28 llgfr %r2,%r2 # unsigned int 16 llgfr %r2,%r2 # unsigned int
29 jg sys_close # branch to system call 17 jg sys_close # branch to system call
@@ -777,18 +765,6 @@ ENTRY(sys_epoll_wait_wrapper)
777 lgfr %r5,%r5 # int 765 lgfr %r5,%r5 # int
778 jg sys_epoll_wait # branch to system call 766 jg sys_epoll_wait # branch to system call
779 767
780ENTRY(sys32_fadvise64_wrapper)
781 lgfr %r2,%r2 # int
782 sllg %r3,%r3,32 # get high word of 64bit loff_t
783 or %r3,%r4 # get low word of 64bit loff_t
784 llgfr %r4,%r5 # size_t (unsigned long)
785 lgfr %r5,%r6 # int
786 jg sys32_fadvise64
787
788ENTRY(sys32_fadvise64_64_wrapper)
789 llgtr %r2,%r2 # struct fadvise64_64_args *
790 jg sys32_fadvise64_64
791
792ENTRY(sys32_clock_settime_wrapper) 768ENTRY(sys32_clock_settime_wrapper)
793 lgfr %r2,%r2 # clockid_t (int) 769 lgfr %r2,%r2 # clockid_t (int)
794 llgtr %r3,%r3 # struct compat_timespec * 770 llgtr %r3,%r3 # struct compat_timespec *
diff --git a/arch/s390/kernel/syscalls.S b/arch/s390/kernel/syscalls.S
index 9d4e6b576173..5a83f6a52c0e 100644
--- a/arch/s390/kernel/syscalls.S
+++ b/arch/s390/kernel/syscalls.S
@@ -11,8 +11,8 @@
11NI_SYSCALL /* 0 */ 11NI_SYSCALL /* 0 */
12SYSCALL(sys_exit,sys_exit,sys32_exit_wrapper) 12SYSCALL(sys_exit,sys_exit,sys32_exit_wrapper)
13SYSCALL(sys_fork,sys_fork,sys_fork) 13SYSCALL(sys_fork,sys_fork,sys_fork)
14SYSCALL(sys_read,sys_read,sys32_read_wrapper) 14SYSCALL(sys_read,sys_read,compat_sys_s390_read)
15SYSCALL(sys_write,sys_write,sys32_write_wrapper) 15SYSCALL(sys_write,sys_write,compat_sys_s390_write)
16SYSCALL(sys_open,sys_open,compat_sys_open) /* 5 */ 16SYSCALL(sys_open,sys_open,compat_sys_open) /* 5 */
17SYSCALL(sys_close,sys_close,sys32_close_wrapper) 17SYSCALL(sys_close,sys_close,sys32_close_wrapper)
18SYSCALL(sys_restart_syscall,sys_restart_syscall,sys_restart_syscall) 18SYSCALL(sys_restart_syscall,sys_restart_syscall,sys_restart_syscall)
@@ -261,7 +261,7 @@ SYSCALL(sys_epoll_create,sys_epoll_create,sys_epoll_create_wrapper)
261SYSCALL(sys_epoll_ctl,sys_epoll_ctl,sys_epoll_ctl_wrapper) /* 250 */ 261SYSCALL(sys_epoll_ctl,sys_epoll_ctl,sys_epoll_ctl_wrapper) /* 250 */
262SYSCALL(sys_epoll_wait,sys_epoll_wait,sys_epoll_wait_wrapper) 262SYSCALL(sys_epoll_wait,sys_epoll_wait,sys_epoll_wait_wrapper)
263SYSCALL(sys_set_tid_address,sys_set_tid_address,sys32_set_tid_address_wrapper) 263SYSCALL(sys_set_tid_address,sys_set_tid_address,sys32_set_tid_address_wrapper)
264SYSCALL(sys_s390_fadvise64,sys_fadvise64_64,sys32_fadvise64_wrapper) 264SYSCALL(sys_s390_fadvise64,sys_fadvise64_64,compat_sys_s390_fadvise64)
265SYSCALL(sys_timer_create,sys_timer_create,sys32_timer_create_wrapper) 265SYSCALL(sys_timer_create,sys_timer_create,sys32_timer_create_wrapper)
266SYSCALL(sys_timer_settime,sys_timer_settime,sys32_timer_settime_wrapper) /* 255 */ 266SYSCALL(sys_timer_settime,sys_timer_settime,sys32_timer_settime_wrapper) /* 255 */
267SYSCALL(sys_timer_gettime,sys_timer_gettime,sys32_timer_gettime_wrapper) 267SYSCALL(sys_timer_gettime,sys_timer_gettime,sys32_timer_gettime_wrapper)
@@ -272,7 +272,7 @@ SYSCALL(sys_clock_gettime,sys_clock_gettime,sys32_clock_gettime_wrapper) /* 260
272SYSCALL(sys_clock_getres,sys_clock_getres,sys32_clock_getres_wrapper) 272SYSCALL(sys_clock_getres,sys_clock_getres,sys32_clock_getres_wrapper)
273SYSCALL(sys_clock_nanosleep,sys_clock_nanosleep,sys32_clock_nanosleep_wrapper) 273SYSCALL(sys_clock_nanosleep,sys_clock_nanosleep,sys32_clock_nanosleep_wrapper)
274NI_SYSCALL /* reserved for vserver */ 274NI_SYSCALL /* reserved for vserver */
275SYSCALL(sys_s390_fadvise64_64,sys_ni_syscall,sys32_fadvise64_64_wrapper) 275SYSCALL(sys_s390_fadvise64_64,sys_ni_syscall,compat_sys_s390_fadvise64_64)
276SYSCALL(sys_statfs64,sys_statfs64,compat_sys_statfs64_wrapper) 276SYSCALL(sys_statfs64,sys_statfs64,compat_sys_statfs64_wrapper)
277SYSCALL(sys_fstatfs64,sys_fstatfs64,compat_sys_fstatfs64_wrapper) 277SYSCALL(sys_fstatfs64,sys_fstatfs64,compat_sys_fstatfs64_wrapper)
278SYSCALL(sys_remap_file_pages,sys_remap_file_pages,sys32_remap_file_pages_wrapper) 278SYSCALL(sys_remap_file_pages,sys_remap_file_pages,sys32_remap_file_pages_wrapper)