summaryrefslogtreecommitdiffstats
path: root/arch/ppc/kernel/signal.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/ppc/kernel/signal.c')
-rw-r--r--arch/ppc/kernel/signal.c13
1 files changed, 4 insertions, 9 deletions
diff --git a/arch/ppc/kernel/signal.c b/arch/ppc/kernel/signal.c
index 79847fa0d..dd3d1ae1b 100644
--- a/arch/ppc/kernel/signal.c
+++ b/arch/ppc/kernel/signal.c
@@ -154,7 +154,7 @@ sys_rt_sigsuspend(sigset_t *unewset, size_t sigsetsize, int p3, int p4, int p6,
}
-asmlinkage int
+int
sys_sigaltstack(const stack_t *uss, stack_t *uoss)
{
struct pt_regs *regs = (struct pt_regs *) &uss;
@@ -232,7 +232,7 @@ struct rt_sigframe
* Each of these things must be a multiple of 16 bytes in size.
*
*/
-asmlinkage int sys_rt_sigreturn(struct pt_regs *regs)
+int sys_rt_sigreturn(struct pt_regs *regs)
{
struct rt_sigframe *rt_sf;
struct sigcontext_struct sigctx;
@@ -301,7 +301,6 @@ asmlinkage int sys_rt_sigreturn(struct pt_regs *regs)
return ret;
badframe:
- lock_kernel();
do_exit(SIGSEGV);
}
@@ -351,7 +350,6 @@ badframe:
printk("badframe in setup_rt_frame, regs=%p frame=%p newsp=%lx\n",
regs, frame, newsp);
#endif
- lock_kernel();
do_exit(SIGSEGV);
}
@@ -418,7 +416,6 @@ int sys_sigreturn(struct pt_regs *regs)
return ret;
badframe:
- lock_kernel();
do_exit(SIGSEGV);
}
@@ -460,7 +457,6 @@ badframe:
printk("badframe in setup_frame, regs=%p frame=%p newsp=%lx\n",
regs, frame, newsp);
#endif
- lock_kernel();
do_exit(SIGSEGV);
}
@@ -541,7 +537,6 @@ badframe:
regs, frame, *newspp);
printk("sc=%p sig=%d ka=%p info=%p oldset=%p\n", sc, sig, ka, info, oldset);
#endif
- lock_kernel();
do_exit(SIGSEGV);
}
@@ -645,8 +640,7 @@ int do_signal(sigset_t *oldset, struct pt_regs *regs)
/* FALLTHRU */
default:
- lock_kernel();
- sigaddset(&current->signal, signr);
+ sigaddset(&current->pending.signal, signr);
recalc_sigpending(current);
current->flags |= PF_SIGNALED;
do_exit(exit_code);
@@ -663,6 +657,7 @@ int do_signal(sigset_t *oldset, struct pt_regs *regs)
/* Whee! Actually deliver the signal. */
handle_signal(signr, ka, &info, oldset, regs, &newsp, frame);
+ break;
}
if (regs->trap == 0x0C00 /* System Call! */ &&