Commit b0f95824 authored by Al Viro's avatar Al Viro

parisc: switch to generic compat rt_sigaction()

Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent d914b8dc
...@@ -24,6 +24,7 @@ config PARISC ...@@ -24,6 +24,7 @@ config PARISC
select MODULES_USE_ELF_RELA select MODULES_USE_ELF_RELA
select CLONE_BACKWARDS select CLONE_BACKWARDS
select GENERIC_SIGALTSTACK select GENERIC_SIGALTSTACK
select GENERIC_COMPAT_RT_SIGACTION
select GENERIC_COMPAT_RT_SIGQUEUEINFO select GENERIC_COMPAT_RT_SIGQUEUEINFO
select GENERIC_COMPAT_RT_SIGPROCMASK select GENERIC_COMPAT_RT_SIGPROCMASK
select GENERIC_COMPAT_RT_SIGPENDING select GENERIC_COMPAT_RT_SIGPENDING
......
...@@ -60,34 +60,6 @@ sigset_64to32(compat_sigset_t *s32, sigset_t *s64) ...@@ -60,34 +60,6 @@ sigset_64to32(compat_sigset_t *s32, sigset_t *s64)
s32->sig[1] = (s64->sig[0] >> 32) & 0xffffffffUL; s32->sig[1] = (s64->sig[0] >> 32) & 0xffffffffUL;
} }
long
sys32_rt_sigaction(int sig, const struct sigaction32 __user *act, struct sigaction32 __user *oact,
size_t sigsetsize)
{
struct k_sigaction32 new_sa32, old_sa32;
struct k_sigaction new_sa, old_sa;
int ret = -EINVAL;
if (act) {
if (copy_from_user(&new_sa32.sa, act, sizeof new_sa32.sa))
return -EFAULT;
new_sa.sa.sa_handler = (__sighandler_t)(unsigned long)new_sa32.sa.sa_handler;
new_sa.sa.sa_flags = new_sa32.sa.sa_flags;
sigset_32to64(&new_sa.sa.sa_mask, &new_sa32.sa.sa_mask);
}
ret = do_sigaction(sig, act ? &new_sa : NULL, oact ? &old_sa : NULL);
if (!ret && oact) {
sigset_64to32(&old_sa32.sa.sa_mask, &old_sa.sa.sa_mask);
old_sa32.sa.sa_flags = old_sa.sa.sa_flags;
old_sa32.sa.sa_handler = (__sighandler_t32)(unsigned long)old_sa.sa.sa_handler;
if (copy_to_user(oact, &old_sa32.sa, sizeof old_sa32.sa))
return -EFAULT;
}
return ret;
}
long long
restore_sigcontext32(struct compat_sigcontext __user *sc, struct compat_regfile __user * rf, restore_sigcontext32(struct compat_sigcontext __user *sc, struct compat_regfile __user * rf,
struct pt_regs *regs) struct pt_regs *regs)
......
...@@ -21,17 +21,6 @@ ...@@ -21,17 +21,6 @@
#include <linux/compat.h> #include <linux/compat.h>
typedef compat_uptr_t compat_sighandler_t;
/* Most things should be clean enough to redefine this at will, if care
is taken to make libc match. */
struct compat_sigaction {
compat_sighandler_t sa_handler;
compat_uint_t sa_flags;
compat_sigset_t sa_mask; /* mask last for extensibility */
};
/* 32-bit ucontext as seen from an 64-bit kernel */ /* 32-bit ucontext as seen from an 64-bit kernel */
struct compat_ucontext { struct compat_ucontext {
compat_uint_t uc_flags; compat_uint_t uc_flags;
...@@ -45,10 +34,6 @@ struct compat_ucontext { ...@@ -45,10 +34,6 @@ struct compat_ucontext {
/* ELF32 signal handling */ /* ELF32 signal handling */
struct k_sigaction32 {
struct compat_sigaction sa;
};
int copy_siginfo_to_user32 (compat_siginfo_t __user *to, siginfo_t *from); int copy_siginfo_to_user32 (compat_siginfo_t __user *to, siginfo_t *from);
int copy_siginfo_from_user32 (siginfo_t *to, compat_siginfo_t __user *from); int copy_siginfo_from_user32 (siginfo_t *to, compat_siginfo_t __user *from);
......
...@@ -33,16 +33,4 @@ ...@@ -33,16 +33,4 @@
set_fs (old_fs); \ set_fs (old_fs); \
} }
#ifdef CONFIG_COMPAT
typedef __u32 __sighandler_t32;
struct sigaction32 {
__sighandler_t32 sa_handler;
unsigned int sa_flags;
compat_sigset_t sa_mask; /* mask last for extensibility */
};
#endif
#endif #endif
...@@ -265,7 +265,7 @@ ...@@ -265,7 +265,7 @@
ENTRY_SAME(prctl) ENTRY_SAME(prctl)
/* signals need a careful review */ /* signals need a careful review */
ENTRY_SAME(rt_sigreturn_wrapper) ENTRY_SAME(rt_sigreturn_wrapper)
ENTRY_DIFF(rt_sigaction) ENTRY_COMP(rt_sigaction)
ENTRY_COMP(rt_sigprocmask) /* 175 */ ENTRY_COMP(rt_sigprocmask) /* 175 */
ENTRY_COMP(rt_sigpending) ENTRY_COMP(rt_sigpending)
ENTRY_COMP(rt_sigtimedwait) ENTRY_COMP(rt_sigtimedwait)
......
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