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) |