|
@@ -52,42 +52,6 @@ void do_signal(int restart, struct pt_regs *regs);
|
|
|
void keep_debug_flags(unsigned long oldccs, unsigned long oldspc,
|
|
|
struct pt_regs *regs);
|
|
|
|
|
|
-int
|
|
|
-sys_sigaction(int signal, const struct old_sigaction *act,
|
|
|
- struct old_sigaction *oact)
|
|
|
-{
|
|
|
- int retval;
|
|
|
- struct k_sigaction newk;
|
|
|
- struct k_sigaction oldk;
|
|
|
-
|
|
|
- if (act) {
|
|
|
- old_sigset_t mask;
|
|
|
-
|
|
|
- if (!access_ok(VERIFY_READ, act, sizeof(*act)) ||
|
|
|
- __get_user(newk.sa.sa_handler, &act->sa_handler) ||
|
|
|
- __get_user(newk.sa.sa_restorer, &act->sa_restorer) ||
|
|
|
- __get_user(newk.sa.sa_flags, &act->sa_flags) ||
|
|
|
- __get_user(mask, &act->sa_mask))
|
|
|
- return -EFAULT;
|
|
|
-
|
|
|
- siginitset(&newk.sa.sa_mask, mask);
|
|
|
- }
|
|
|
-
|
|
|
- retval = do_sigaction(signal, act ? &newk : NULL, oact ? &oldk : NULL);
|
|
|
-
|
|
|
- if (!retval && oact) {
|
|
|
- if (!access_ok(VERIFY_WRITE, oact, sizeof(*oact)) ||
|
|
|
- __put_user(oldk.sa.sa_handler, &oact->sa_handler) ||
|
|
|
- __put_user(oldk.sa.sa_restorer, &oact->sa_restorer) ||
|
|
|
- __put_user(oldk.sa.sa_flags, &oact->sa_flags) ||
|
|
|
- __put_user(oldk.sa.sa_mask.sig[0], &oact->sa_mask))
|
|
|
- return -EFAULT;
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- return retval;
|
|
|
-}
|
|
|
-
|
|
|
static int
|
|
|
restore_sigcontext(struct pt_regs *regs, struct sigcontext __user *sc)
|
|
|
{
|