diff options
| author | Heiko Carstens <heiko.carstens@de.ibm.com> | 2014-03-01 06:18:46 -0500 |
|---|---|---|
| committer | Heiko Carstens <heiko.carstens@de.ibm.com> | 2014-03-04 03:05:46 -0500 |
| commit | 00fcb1494f645be4e0cd703756448fc64ca2a44a (patch) | |
| tree | ea33584e914b7e1728c08e14c5945c3d02c6cf3d | |
| parent | 7f6afe87a02be1d889b36ce076d7beddd4cd5332 (diff) | |
s390/compat: convert system call wrappers to C part 15
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
| -rw-r--r-- | arch/s390/kernel/compat_wrap.c | 12 | ||||
| -rw-r--r-- | arch/s390/kernel/compat_wrapper.S | 74 | ||||
| -rw-r--r-- | arch/s390/kernel/entry.h | 1 | ||||
| -rw-r--r-- | arch/s390/kernel/syscalls.S | 24 |
4 files changed, 25 insertions, 86 deletions
diff --git a/arch/s390/kernel/compat_wrap.c b/arch/s390/kernel/compat_wrap.c index 7b7c9f698d7f..17600b15ae3a 100644 --- a/arch/s390/kernel/compat_wrap.c +++ b/arch/s390/kernel/compat_wrap.c | |||
| @@ -164,3 +164,15 @@ COMPAT_SYSCALL_WRAP3(dup3, unsigned int, oldfd, unsigned int, newfd, int, flags) | |||
| 164 | COMPAT_SYSCALL_WRAP1(epoll_create1, int, flags); | 164 | COMPAT_SYSCALL_WRAP1(epoll_create1, int, flags); |
| 165 | COMPAT_SYSCALL_WRAP2(tkill, int, pid, int, sig); | 165 | COMPAT_SYSCALL_WRAP2(tkill, int, pid, int, sig); |
| 166 | COMPAT_SYSCALL_WRAP3(tgkill, int, tgid, int, pid, int, sig); | 166 | COMPAT_SYSCALL_WRAP3(tgkill, int, tgid, int, pid, int, sig); |
| 167 | COMPAT_SYSCALL_WRAP5(perf_event_open, struct perf_event_attr __user *, attr_uptr, pid_t, pid, int, cpu, int, group_fd, u32, flags); | ||
| 168 | COMPAT_SYSCALL_WRAP5(clone, u32, newsp, u32, clone_flags, int __user *, parent_tidptr, int __user *, child_tidptr, int, tls_val); | ||
| 169 | COMPAT_SYSCALL_WRAP2(fanotify_init, unsigned int, flags, unsigned int, event_f_flags); | ||
| 170 | COMPAT_SYSCALL_WRAP4(prlimit64, pid_t, pid, unsigned int, resource, const struct rlimit64 __user *, new_rlim, struct rlimit64 __user *, old_rlim); | ||
| 171 | COMPAT_SYSCALL_WRAP5(name_to_handle_at, int, dfd, const char __user *, name, struct file_handle __user *, handle, int __user *, mnt_id, int, flag); | ||
| 172 | COMPAT_SYSCALL_WRAP1(syncfs, int, fd); | ||
| 173 | COMPAT_SYSCALL_WRAP2(setns, int, fd, int, nstype); | ||
| 174 | COMPAT_SYSCALL_WRAP2(s390_runtime_instr, int, command, int, signum); | ||
| 175 | COMPAT_SYSCALL_WRAP5(kcmp, pid_t, pid1, pid_t, pid2, int, type, u32, idx1, u32, idx2); | ||
| 176 | COMPAT_SYSCALL_WRAP3(finit_module, int, fd, const char __user *, uargs, int, flags); | ||
| 177 | COMPAT_SYSCALL_WRAP3(sched_setattr, pid_t, pid, struct sched_attr __user *, attr, unsigned int, flags); | ||
| 178 | COMPAT_SYSCALL_WRAP4(sched_getattr, pid_t, pid, struct sched_attr __user *, attr, unsigned int, size, unsigned int, flags); | ||
diff --git a/arch/s390/kernel/compat_wrapper.S b/arch/s390/kernel/compat_wrapper.S index d17bc862be3f..a1a13671922a 100644 --- a/arch/s390/kernel/compat_wrapper.S +++ b/arch/s390/kernel/compat_wrapper.S | |||
| @@ -355,61 +355,17 @@ ENTRY(compat_sys_keyctl_wrapper) | |||
| 355 | llgfr %r6,%r6 # u32 | 355 | llgfr %r6,%r6 # u32 |
| 356 | jg compat_sys_keyctl # branch to system call | 356 | jg compat_sys_keyctl # branch to system call |
| 357 | 357 | ||
| 358 | ENTRY(sys_perf_event_open_wrapper) | ||
| 359 | llgtr %r2,%r2 # const struct perf_event_attr * | ||
| 360 | lgfr %r3,%r3 # pid_t | ||
| 361 | lgfr %r4,%r4 # int | ||
| 362 | lgfr %r5,%r5 # int | ||
| 363 | llgfr %r6,%r6 # unsigned long | ||
| 364 | jg sys_perf_event_open # branch to system call | ||
| 365 | |||
| 366 | ENTRY(sys_clone_wrapper) | ||
| 367 | llgfr %r2,%r2 # unsigned long | ||
| 368 | llgfr %r3,%r3 # unsigned long | ||
| 369 | llgtr %r4,%r4 # int * | ||
| 370 | llgtr %r5,%r5 # int * | ||
| 371 | jg sys_clone # branch to system call | ||
| 372 | |||
| 373 | ENTRY(sys32_execve_wrapper) | 358 | ENTRY(sys32_execve_wrapper) |
| 374 | llgtr %r2,%r2 # char * | 359 | llgtr %r2,%r2 # char * |
| 375 | llgtr %r3,%r3 # compat_uptr_t * | 360 | llgtr %r3,%r3 # compat_uptr_t * |
| 376 | llgtr %r4,%r4 # compat_uptr_t * | 361 | llgtr %r4,%r4 # compat_uptr_t * |
| 377 | jg compat_sys_execve # branch to system call | 362 | jg compat_sys_execve # branch to system call |
| 378 | 363 | ||
| 379 | ENTRY(sys_fanotify_init_wrapper) | ||
| 380 | llgfr %r2,%r2 # unsigned int | ||
| 381 | llgfr %r3,%r3 # unsigned int | ||
| 382 | jg sys_fanotify_init # branch to system call | ||
| 383 | |||
| 384 | ENTRY(sys_prlimit64_wrapper) | ||
| 385 | lgfr %r2,%r2 # pid_t | ||
| 386 | llgfr %r3,%r3 # unsigned int | ||
| 387 | llgtr %r4,%r4 # const struct rlimit64 __user * | ||
| 388 | llgtr %r5,%r5 # struct rlimit64 __user * | ||
| 389 | jg sys_prlimit64 # branch to system call | ||
| 390 | |||
| 391 | ENTRY(sys_name_to_handle_at_wrapper) | ||
| 392 | lgfr %r2,%r2 # int | ||
| 393 | llgtr %r3,%r3 # const char __user * | ||
| 394 | llgtr %r4,%r4 # struct file_handle __user * | ||
| 395 | llgtr %r5,%r5 # int __user * | ||
| 396 | lgfr %r6,%r6 # int | ||
| 397 | jg sys_name_to_handle_at | ||
| 398 | |||
| 399 | ENTRY(compat_sys_clock_adjtime_wrapper) | 364 | ENTRY(compat_sys_clock_adjtime_wrapper) |
| 400 | lgfr %r2,%r2 # clockid_t (int) | 365 | lgfr %r2,%r2 # clockid_t (int) |
| 401 | llgtr %r3,%r3 # struct compat_timex __user * | 366 | llgtr %r3,%r3 # struct compat_timex __user * |
| 402 | jg compat_sys_clock_adjtime | 367 | jg compat_sys_clock_adjtime |
| 403 | 368 | ||
| 404 | ENTRY(sys_syncfs_wrapper) | ||
| 405 | lgfr %r2,%r2 # int | ||
| 406 | jg sys_syncfs | ||
| 407 | |||
| 408 | ENTRY(sys_setns_wrapper) | ||
| 409 | lgfr %r2,%r2 # int | ||
| 410 | lgfr %r3,%r3 # int | ||
| 411 | jg sys_setns | ||
| 412 | |||
| 413 | ENTRY(compat_sys_process_vm_readv_wrapper) | 369 | ENTRY(compat_sys_process_vm_readv_wrapper) |
| 414 | lgfr %r2,%r2 # compat_pid_t | 370 | lgfr %r2,%r2 # compat_pid_t |
| 415 | llgtr %r3,%r3 # struct compat_iovec __user * | 371 | llgtr %r3,%r3 # struct compat_iovec __user * |
| @@ -429,33 +385,3 @@ ENTRY(compat_sys_process_vm_writev_wrapper) | |||
| 429 | llgf %r0,164(%r15) # unsigned long | 385 | llgf %r0,164(%r15) # unsigned long |
| 430 | stg %r0,160(%r15) | 386 | stg %r0,160(%r15) |
| 431 | jg compat_sys_process_vm_writev | 387 | jg compat_sys_process_vm_writev |
| 432 | |||
| 433 | ENTRY(sys_s390_runtime_instr_wrapper) | ||
| 434 | lgfr %r2,%r2 # int | ||
| 435 | lgfr %r3,%r3 # int | ||
| 436 | jg sys_s390_runtime_instr | ||
| 437 | |||
| 438 | ENTRY(sys_kcmp_wrapper) | ||
| 439 | lgfr %r2,%r2 # pid_t | ||
| 440 | lgfr %r3,%r3 # pid_t | ||
| 441 | lgfr %r4,%r4 # int | ||
| 442 | llgfr %r5,%r5 # unsigned long | ||
| 443 | llgfr %r6,%r6 # unsigned long | ||
| 444 | jg sys_kcmp | ||
| 445 | |||
| 446 | ENTRY(sys_finit_module_wrapper) | ||
| 447 | lgfr %r2,%r2 # int | ||
| 448 | llgtr %r3,%r3 # const char __user * | ||
| 449 | lgfr %r4,%r4 # int | ||
| 450 | jg sys_finit_module | ||
| 451 | |||
| 452 | ENTRY(sys_sched_setattr_wrapper) | ||
| 453 | lgfr %r2,%r2 # pid_t | ||
| 454 | llgtr %r3,%r3 # struct sched_attr __user * | ||
| 455 | jg sys_sched_setattr | ||
| 456 | |||
| 457 | ENTRY(sys_sched_getattr_wrapper) | ||
| 458 | lgfr %r2,%r2 # pid_t | ||
| 459 | llgtr %r3,%r3 # const char __user * | ||
| 460 | llgfr %r4,%r4 # unsigned int | ||
| 461 | jg sys_sched_getattr | ||
diff --git a/arch/s390/kernel/entry.h b/arch/s390/kernel/entry.h index 8c6c022aeb71..e9167889ff1a 100644 --- a/arch/s390/kernel/entry.h +++ b/arch/s390/kernel/entry.h | |||
| @@ -73,5 +73,6 @@ long sys32_sigreturn(void); | |||
| 73 | long sys32_rt_sigreturn(void); | 73 | long sys32_rt_sigreturn(void); |
| 74 | 74 | ||
| 75 | long sys_s390_personality(unsigned int personality); | 75 | long sys_s390_personality(unsigned int personality); |
| 76 | long sys_s390_runtime_instr(int command, int signum); | ||
| 76 | 77 | ||
| 77 | #endif /* _ENTRY_H */ | 78 | #endif /* _ENTRY_H */ |
diff --git a/arch/s390/kernel/syscalls.S b/arch/s390/kernel/syscalls.S index 5cfbd427ce13..3ad73a6f6159 100644 --- a/arch/s390/kernel/syscalls.S +++ b/arch/s390/kernel/syscalls.S | |||
| @@ -128,7 +128,7 @@ SYSCALL(sys_sysinfo,sys_sysinfo,compat_sys_sysinfo_wrapper) | |||
| 128 | SYSCALL(sys_s390_ipc,sys_s390_ipc,compat_sys_s390_ipc) | 128 | SYSCALL(sys_s390_ipc,sys_s390_ipc,compat_sys_s390_ipc) |
| 129 | SYSCALL(sys_fsync,sys_fsync,compat_sys_fsync) | 129 | SYSCALL(sys_fsync,sys_fsync,compat_sys_fsync) |
| 130 | SYSCALL(sys_sigreturn,sys_sigreturn,sys32_sigreturn) | 130 | SYSCALL(sys_sigreturn,sys_sigreturn,sys32_sigreturn) |
| 131 | SYSCALL(sys_clone,sys_clone,sys_clone_wrapper) /* 120 */ | 131 | SYSCALL(sys_clone,sys_clone,compat_sys_clone) /* 120 */ |
| 132 | SYSCALL(sys_setdomainname,sys_setdomainname,compat_sys_setdomainname) | 132 | SYSCALL(sys_setdomainname,sys_setdomainname,compat_sys_setdomainname) |
| 133 | SYSCALL(sys_newuname,sys_newuname,compat_sys_newuname) | 133 | SYSCALL(sys_newuname,sys_newuname,compat_sys_newuname) |
| 134 | NI_SYSCALL /* modify_ldt for i386 */ | 134 | NI_SYSCALL /* modify_ldt for i386 */ |
| @@ -339,19 +339,19 @@ SYSCALL(sys_epoll_create1,sys_epoll_create1,compat_sys_epoll_create1) | |||
| 339 | SYSCALL(sys_preadv,sys_preadv,compat_sys_preadv) | 339 | SYSCALL(sys_preadv,sys_preadv,compat_sys_preadv) |
| 340 | SYSCALL(sys_pwritev,sys_pwritev,compat_sys_pwritev) | 340 | SYSCALL(sys_pwritev,sys_pwritev,compat_sys_pwritev) |
| 341 | SYSCALL(sys_rt_tgsigqueueinfo,sys_rt_tgsigqueueinfo,compat_sys_rt_tgsigqueueinfo) /* 330 */ | 341 | SYSCALL(sys_rt_tgsigqueueinfo,sys_rt_tgsigqueueinfo,compat_sys_rt_tgsigqueueinfo) /* 330 */ |
| 342 | SYSCALL(sys_perf_event_open,sys_perf_event_open,sys_perf_event_open_wrapper) | 342 | SYSCALL(sys_perf_event_open,sys_perf_event_open,compat_sys_perf_event_open) |
| 343 | SYSCALL(sys_fanotify_init,sys_fanotify_init,sys_fanotify_init_wrapper) | 343 | SYSCALL(sys_fanotify_init,sys_fanotify_init,compat_sys_fanotify_init) |
| 344 | SYSCALL(sys_fanotify_mark,sys_fanotify_mark,compat_sys_fanotify_mark) | 344 | SYSCALL(sys_fanotify_mark,sys_fanotify_mark,compat_sys_fanotify_mark) |
| 345 | SYSCALL(sys_prlimit64,sys_prlimit64,sys_prlimit64_wrapper) | 345 | SYSCALL(sys_prlimit64,sys_prlimit64,compat_sys_prlimit64) |
| 346 | SYSCALL(sys_name_to_handle_at,sys_name_to_handle_at,sys_name_to_handle_at_wrapper) /* 335 */ | 346 | SYSCALL(sys_name_to_handle_at,sys_name_to_handle_at,compat_sys_name_to_handle_at) /* 335 */ |
| 347 | SYSCALL(sys_open_by_handle_at,sys_open_by_handle_at,compat_sys_open_by_handle_at) | 347 | SYSCALL(sys_open_by_handle_at,sys_open_by_handle_at,compat_sys_open_by_handle_at) |
| 348 | SYSCALL(sys_clock_adjtime,sys_clock_adjtime,compat_sys_clock_adjtime_wrapper) | 348 | SYSCALL(sys_clock_adjtime,sys_clock_adjtime,compat_sys_clock_adjtime_wrapper) |
| 349 | SYSCALL(sys_syncfs,sys_syncfs,sys_syncfs_wrapper) | 349 | SYSCALL(sys_syncfs,sys_syncfs,compat_sys_syncfs) |
| 350 | SYSCALL(sys_setns,sys_setns,sys_setns_wrapper) | 350 | SYSCALL(sys_setns,sys_setns,compat_sys_setns) |
| 351 | SYSCALL(sys_process_vm_readv,sys_process_vm_readv,compat_sys_process_vm_readv_wrapper) /* 340 */ | 351 | SYSCALL(sys_process_vm_readv,sys_process_vm_readv,compat_sys_process_vm_readv_wrapper) /* 340 */ |
| 352 | SYSCALL(sys_process_vm_writev,sys_process_vm_writev,compat_sys_process_vm_writev_wrapper) | 352 | SYSCALL(sys_process_vm_writev,sys_process_vm_writev,compat_sys_process_vm_writev_wrapper) |
| 353 | SYSCALL(sys_ni_syscall,sys_s390_runtime_instr,sys_s390_runtime_instr_wrapper) | 353 | SYSCALL(sys_ni_syscall,sys_s390_runtime_instr,compat_sys_s390_runtime_instr) |
| 354 | SYSCALL(sys_kcmp,sys_kcmp,sys_kcmp_wrapper) | 354 | SYSCALL(sys_kcmp,sys_kcmp,compat_sys_kcmp) |
| 355 | SYSCALL(sys_finit_module,sys_finit_module,sys_finit_module_wrapper) | 355 | SYSCALL(sys_finit_module,sys_finit_module,compat_sys_finit_module) |
| 356 | SYSCALL(sys_sched_setattr,sys_sched_setattr,sys_sched_setattr_wrapper) /* 345 */ | 356 | SYSCALL(sys_sched_setattr,sys_sched_setattr,compat_sys_sched_setattr) /* 345 */ |
| 357 | SYSCALL(sys_sched_getattr,sys_sched_getattr,sys_sched_getattr_wrapper) | 357 | SYSCALL(sys_sched_getattr,sys_sched_getattr,compat_sys_sched_getattr) |
