]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/blobdiff - arch/mips/kernel/signal_n32.c
microblaze: Use sigsp()
[mirror_ubuntu-jammy-kernel.git] / arch / mips / kernel / signal_n32.c
index b2241bb9cac1c16d69c9a2c4ce8d53749eff3d54..7d04f2868ba64e670ea36a4d9d06a180a60312a8 100644 (file)
@@ -102,18 +102,18 @@ badframe:
        force_sig(SIGSEGV, current);
 }
 
-static int setup_rt_frame_n32(void *sig_return, struct k_sigaction *ka,
-       struct pt_regs *regs, int signr, sigset_t *set, siginfo_t *info)
+static int setup_rt_frame_n32(void *sig_return, struct ksignal *ksig,
+                             struct pt_regs *regs, sigset_t *set)
 {
        struct rt_sigframe_n32 __user *frame;
        int err = 0;
 
-       frame = get_sigframe(ka, regs, sizeof(*frame));
+       frame = get_sigframe(&ksig->ka, regs, sizeof(*frame));
        if (!access_ok(VERIFY_WRITE, frame, sizeof (*frame)))
-               goto give_sigsegv;
+               return -EFAULT;
 
        /* Create siginfo.  */
-       err |= copy_siginfo_to_user32(&frame->rs_info, info);
+       err |= copy_siginfo_to_user32(&frame->rs_info, &ksig->info);
 
        /* Create the ucontext.  */
        err |= __put_user(0, &frame->rs_uc.uc_flags);
@@ -123,7 +123,7 @@ static int setup_rt_frame_n32(void *sig_return, struct k_sigaction *ka,
        err |= __copy_conv_sigset_to_user(&frame->rs_uc.uc_sigmask, set);
 
        if (err)
-               goto give_sigsegv;
+               return -EFAULT;
 
        /*
         * Arguments to signal handler:
@@ -135,22 +135,18 @@ static int setup_rt_frame_n32(void *sig_return, struct k_sigaction *ka,
         * $25 and c0_epc point to the signal handler, $29 points to
         * the struct rt_sigframe.
         */
-       regs->regs[ 4] = signr;
+       regs->regs[ 4] = ksig->sig;
        regs->regs[ 5] = (unsigned long) &frame->rs_info;
        regs->regs[ 6] = (unsigned long) &frame->rs_uc;
        regs->regs[29] = (unsigned long) frame;
        regs->regs[31] = (unsigned long) sig_return;
-       regs->cp0_epc = regs->regs[25] = (unsigned long) ka->sa.sa_handler;
+       regs->cp0_epc = regs->regs[25] = (unsigned long) ksig->ka.sa.sa_handler;
 
        DEBUGP("SIG deliver (%s:%d): sp=0x%p pc=0x%lx ra=0x%lx\n",
               current->comm, current->pid,
               frame, regs->cp0_epc, regs->regs[31]);
 
        return 0;
-
-give_sigsegv:
-       force_sigsegv(signr, current);
-       return -EFAULT;
 }
 
 struct mips_abi mips_abi_n32 = {