diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2012-12-25 18:56:13 -0500 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2013-02-14 09:17:53 -0500 |
commit | 02323a9d92a1acc0bbc40239a0a3a91bffa0dad3 (patch) | |
tree | be1c0e16c6f2a03fc7197c31275fa3235a5cd91e /arch/arm64/kernel/signal32.c | |
parent | 84b9e9b402386edf12664e37ee1f2e503472fb5e (diff) |
arm64: switch to generic compat rt_sigaction()
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'arch/arm64/kernel/signal32.c')
-rw-r--r-- | arch/arm64/kernel/signal32.c | 41 |
1 files changed, 0 insertions, 41 deletions
diff --git a/arch/arm64/kernel/signal32.c b/arch/arm64/kernel/signal32.c index a1bd4395a62c..892b9dfb5517 100644 --- a/arch/arm64/kernel/signal32.c +++ b/arch/arm64/kernel/signal32.c | |||
@@ -28,13 +28,6 @@ | |||
28 | #include <asm/uaccess.h> | 28 | #include <asm/uaccess.h> |
29 | #include <asm/unistd32.h> | 29 | #include <asm/unistd32.h> |
30 | 30 | ||
31 | struct compat_sigaction { | ||
32 | compat_uptr_t sa_handler; | ||
33 | compat_ulong_t sa_flags; | ||
34 | compat_uptr_t sa_restorer; | ||
35 | compat_sigset_t sa_mask; | ||
36 | }; | ||
37 | |||
38 | struct compat_old_sigaction { | 31 | struct compat_old_sigaction { |
39 | compat_uptr_t sa_handler; | 32 | compat_uptr_t sa_handler; |
40 | compat_old_sigset_t sa_mask; | 33 | compat_old_sigset_t sa_mask; |
@@ -371,40 +364,6 @@ asmlinkage int compat_sys_sigaction(int sig, | |||
371 | return ret; | 364 | return ret; |
372 | } | 365 | } |
373 | 366 | ||
374 | asmlinkage int compat_sys_rt_sigaction(int sig, | ||
375 | const struct compat_sigaction __user *act, | ||
376 | struct compat_sigaction __user *oact, | ||
377 | compat_size_t sigsetsize) | ||
378 | { | ||
379 | struct k_sigaction new_ka, old_ka; | ||
380 | int ret; | ||
381 | |||
382 | /* XXX: Don't preclude handling different sized sigset_t's. */ | ||
383 | if (sigsetsize != sizeof(compat_sigset_t)) | ||
384 | return -EINVAL; | ||
385 | |||
386 | if (act) { | ||
387 | compat_uptr_t handler, restorer; | ||
388 | |||
389 | ret = get_user(handler, &act->sa_handler); | ||
390 | new_ka.sa.sa_handler = compat_ptr(handler); | ||
391 | ret |= get_user(restorer, &act->sa_restorer); | ||
392 | new_ka.sa.sa_restorer = compat_ptr(restorer); | ||
393 | ret |= get_sigset_t(&new_ka.sa.sa_mask, &act->sa_mask); | ||
394 | ret |= __get_user(new_ka.sa.sa_flags, &act->sa_flags); | ||
395 | if (ret) | ||
396 | return -EFAULT; | ||
397 | } | ||
398 | |||
399 | ret = do_sigaction(sig, act ? &new_ka : NULL, oact ? &old_ka : NULL); | ||
400 | if (!ret && oact) { | ||
401 | ret = put_user(ptr_to_compat(old_ka.sa.sa_handler), &oact->sa_handler); | ||
402 | ret |= put_sigset_t(&oact->sa_mask, &old_ka.sa.sa_mask); | ||
403 | ret |= __put_user(old_ka.sa.sa_flags, &oact->sa_flags); | ||
404 | } | ||
405 | return ret; | ||
406 | } | ||
407 | |||
408 | static int compat_restore_sigframe(struct pt_regs *regs, | 367 | static int compat_restore_sigframe(struct pt_regs *regs, |
409 | struct compat_sigframe __user *sf) | 368 | struct compat_sigframe __user *sf) |
410 | { | 369 | { |