Commit 2f66cc42 authored by William Lee Irwin III's avatar William Lee Irwin III Committed by Linus Torvalds

[PATCH] alpha signal race fixes

Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 63cc2511
...@@ -604,21 +604,20 @@ do_signal(sigset_t *oldset, struct pt_regs * regs, struct switch_stack * sw, ...@@ -604,21 +604,20 @@ do_signal(sigset_t *oldset, struct pt_regs * regs, struct switch_stack * sw,
siginfo_t info; siginfo_t info;
int signr; int signr;
unsigned long single_stepping = ptrace_cancel_bpt(current); unsigned long single_stepping = ptrace_cancel_bpt(current);
struct k_sigaction ka;
if (!oldset) if (!oldset)
oldset = &current->blocked; oldset = &current->blocked;
/* This lets the debugger run, ... */ /* This lets the debugger run, ... */
signr = get_signal_to_deliver(&info, regs, NULL); signr = get_signal_to_deliver(&info, &ka, regs, NULL);
/* ... so re-check the single stepping. */ /* ... so re-check the single stepping. */
single_stepping |= ptrace_cancel_bpt(current); single_stepping |= ptrace_cancel_bpt(current);
if (signr > 0) { if (signr > 0) {
/* Whee! Actually deliver the signal. */ /* Whee! Actually deliver the signal. */
struct k_sigaction *ka = &current->sighand->action[signr-1]; if (r0) syscall_restart(r0, r19, regs, &ka);
handle_signal(signr, &ka, &info, oldset, regs, sw);
if (r0) syscall_restart(r0, r19, regs, ka);
handle_signal(signr, ka, &info, oldset, regs, sw);
if (single_stepping) if (single_stepping)
ptrace_set_bpt(current); /* re-set bpt */ ptrace_set_bpt(current); /* re-set bpt */
return 1; return 1;
......
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