switch mips to generic rt_sigsuspend(), make it unconditional
mips was the last architecture not using the generic variant. Both native and compat variants switched to generic, which is made unconditional now. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
parent
1c37ea8277
commit
bde208d2e1
@ -232,7 +232,7 @@ EXPORT(sysn32_call_table)
|
|||||||
PTR sys_32_rt_sigpending /* 6125 */
|
PTR sys_32_rt_sigpending /* 6125 */
|
||||||
PTR compat_sys_rt_sigtimedwait
|
PTR compat_sys_rt_sigtimedwait
|
||||||
PTR sys_32_rt_sigqueueinfo
|
PTR sys_32_rt_sigqueueinfo
|
||||||
PTR sysn32_rt_sigsuspend
|
PTR compat_sys_rt_sigsuspend
|
||||||
PTR compat_sys_sigaltstack
|
PTR compat_sys_sigaltstack
|
||||||
PTR compat_sys_utime /* 6130 */
|
PTR compat_sys_utime /* 6130 */
|
||||||
PTR sys_mknod
|
PTR sys_mknod
|
||||||
|
@ -391,7 +391,7 @@ sys_call_table:
|
|||||||
PTR sys_32_rt_sigpending
|
PTR sys_32_rt_sigpending
|
||||||
PTR compat_sys_rt_sigtimedwait
|
PTR compat_sys_rt_sigtimedwait
|
||||||
PTR sys_32_rt_sigqueueinfo
|
PTR sys_32_rt_sigqueueinfo
|
||||||
PTR sys32_rt_sigsuspend
|
PTR compat_sys_rt_sigsuspend
|
||||||
PTR sys_32_pread /* 4200 */
|
PTR sys_32_pread /* 4200 */
|
||||||
PTR sys_32_pwrite
|
PTR sys_32_pwrite
|
||||||
PTR sys_chown
|
PTR sys_chown
|
||||||
|
@ -259,19 +259,6 @@ asmlinkage int sys_sigsuspend(nabi_no_regargs struct pt_regs regs)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
SYSCALL_DEFINE2(rt_sigsuspend, sigset_t __user *,unewset, size_t, sigsetsize)
|
|
||||||
{
|
|
||||||
sigset_t newset;
|
|
||||||
|
|
||||||
/* XXX Don't preclude handling different sized sigset_t's. */
|
|
||||||
if (sigsetsize != sizeof(sigset_t))
|
|
||||||
return -EINVAL;
|
|
||||||
|
|
||||||
if (copy_from_user(&newset, unewset, sizeof(newset)))
|
|
||||||
return -EFAULT;
|
|
||||||
return sigsuspend(&newset);
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef CONFIG_TRAD_SIGNALS
|
#ifdef CONFIG_TRAD_SIGNALS
|
||||||
SYSCALL_DEFINE3(sigaction, int, sig, const struct sigaction __user *, act,
|
SYSCALL_DEFINE3(sigaction, int, sig, const struct sigaction __user *, act,
|
||||||
struct sigaction __user *, oact)
|
struct sigaction __user *, oact)
|
||||||
|
@ -284,23 +284,6 @@ asmlinkage int sys32_sigsuspend(nabi_no_regargs struct pt_regs regs)
|
|||||||
return sigsuspend(&newset);
|
return sigsuspend(&newset);
|
||||||
}
|
}
|
||||||
|
|
||||||
asmlinkage int sys32_rt_sigsuspend(nabi_no_regargs struct pt_regs regs)
|
|
||||||
{
|
|
||||||
compat_sigset_t __user *uset;
|
|
||||||
sigset_t newset;
|
|
||||||
size_t sigsetsize;
|
|
||||||
|
|
||||||
/* XXX Don't preclude handling different sized sigset_t's. */
|
|
||||||
sigsetsize = regs.regs[5];
|
|
||||||
if (sigsetsize != sizeof(compat_sigset_t))
|
|
||||||
return -EINVAL;
|
|
||||||
|
|
||||||
uset = (compat_sigset_t __user *) regs.regs[4];
|
|
||||||
if (get_sigset(&newset, uset))
|
|
||||||
return -EFAULT;
|
|
||||||
return sigsuspend(&newset);
|
|
||||||
}
|
|
||||||
|
|
||||||
SYSCALL_DEFINE3(32_sigaction, long, sig, const struct sigaction32 __user *, act,
|
SYSCALL_DEFINE3(32_sigaction, long, sig, const struct sigaction32 __user *, act,
|
||||||
struct sigaction32 __user *, oact)
|
struct sigaction32 __user *, oact)
|
||||||
{
|
{
|
||||||
|
@ -65,27 +65,6 @@ struct rt_sigframe_n32 {
|
|||||||
struct ucontextn32 rs_uc;
|
struct ucontextn32 rs_uc;
|
||||||
};
|
};
|
||||||
|
|
||||||
extern void sigset_from_compat(sigset_t *set, compat_sigset_t *compat);
|
|
||||||
|
|
||||||
asmlinkage int sysn32_rt_sigsuspend(nabi_no_regargs struct pt_regs regs)
|
|
||||||
{
|
|
||||||
compat_sigset_t __user *unewset;
|
|
||||||
compat_sigset_t uset;
|
|
||||||
size_t sigsetsize;
|
|
||||||
sigset_t newset;
|
|
||||||
|
|
||||||
/* XXX Don't preclude handling different sized sigset_t's. */
|
|
||||||
sigsetsize = regs.regs[5];
|
|
||||||
if (sigsetsize != sizeof(sigset_t))
|
|
||||||
return -EINVAL;
|
|
||||||
|
|
||||||
unewset = (compat_sigset_t __user *) regs.regs[4];
|
|
||||||
if (copy_from_user(&uset, unewset, sizeof(uset)))
|
|
||||||
return -EFAULT;
|
|
||||||
sigset_from_compat(&newset, &uset);
|
|
||||||
return sigsuspend(&newset);
|
|
||||||
}
|
|
||||||
|
|
||||||
asmlinkage void sysn32_rt_sigreturn(nabi_no_regargs struct pt_regs regs)
|
asmlinkage void sysn32_rt_sigreturn(nabi_no_regargs struct pt_regs regs)
|
||||||
{
|
{
|
||||||
struct rt_sigframe_n32 __user *frame;
|
struct rt_sigframe_n32 __user *frame;
|
||||||
|
@ -3562,7 +3562,6 @@ int sigsuspend(sigset_t *set)
|
|||||||
return -ERESTARTNOHAND;
|
return -ERESTARTNOHAND;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef __ARCH_WANT_SYS_RT_SIGSUSPEND
|
|
||||||
/**
|
/**
|
||||||
* sys_rt_sigsuspend - replace the signal mask for a value with the
|
* sys_rt_sigsuspend - replace the signal mask for a value with the
|
||||||
* @unewset value until a signal is received
|
* @unewset value until a signal is received
|
||||||
@ -3603,7 +3602,6 @@ COMPAT_SYSCALL_DEFINE2(rt_sigsuspend, compat_sigset_t __user *, unewset, compat_
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef CONFIG_OLD_SIGSUSPEND
|
#ifdef CONFIG_OLD_SIGSUSPEND
|
||||||
SYSCALL_DEFINE1(sigsuspend, old_sigset_t, mask)
|
SYSCALL_DEFINE1(sigsuspend, old_sigset_t, mask)
|
||||||
|
Loading…
Reference in New Issue
Block a user