diff options
| -rw-r--r-- | arch/um/kernel/signal.c | 6 | ||||
| -rw-r--r-- | arch/x86/um/signal.c | 6 |
2 files changed, 5 insertions, 7 deletions
diff --git a/arch/um/kernel/signal.c b/arch/um/kernel/signal.c index 7362d58efc29..cc9c2350e417 100644 --- a/arch/um/kernel/signal.c +++ b/arch/um/kernel/signal.c | |||
| @@ -22,9 +22,13 @@ static void handle_signal(struct pt_regs *regs, unsigned long signr, | |||
| 22 | struct k_sigaction *ka, siginfo_t *info) | 22 | struct k_sigaction *ka, siginfo_t *info) |
| 23 | { | 23 | { |
| 24 | sigset_t *oldset = sigmask_to_save(); | 24 | sigset_t *oldset = sigmask_to_save(); |
| 25 | int singlestep = 0; | ||
| 25 | unsigned long sp; | 26 | unsigned long sp; |
| 26 | int err; | 27 | int err; |
| 27 | 28 | ||
| 29 | if ((current->ptrace & PT_DTRACE) && (current->ptrace & PT_PTRACED)) | ||
| 30 | singlestep = 1; | ||
| 31 | |||
| 28 | /* Did we come from a system call? */ | 32 | /* Did we come from a system call? */ |
| 29 | if (PT_REGS_SYSCALL_NR(regs) >= 0) { | 33 | if (PT_REGS_SYSCALL_NR(regs) >= 0) { |
| 30 | /* If so, check system call restarting.. */ | 34 | /* If so, check system call restarting.. */ |
| @@ -61,7 +65,7 @@ static void handle_signal(struct pt_regs *regs, unsigned long signr, | |||
| 61 | if (err) | 65 | if (err) |
| 62 | force_sigsegv(signr, current); | 66 | force_sigsegv(signr, current); |
| 63 | else | 67 | else |
| 64 | signal_delivered(signr, info, ka, regs, 0); | 68 | signal_delivered(signr, info, ka, regs, singlestep); |
| 65 | } | 69 | } |
| 66 | 70 | ||
| 67 | static int kern_do_signal(struct pt_regs *regs) | 71 | static int kern_do_signal(struct pt_regs *regs) |
diff --git a/arch/x86/um/signal.c b/arch/x86/um/signal.c index a508cea13503..ba7363ecf896 100644 --- a/arch/x86/um/signal.c +++ b/arch/x86/um/signal.c | |||
| @@ -416,9 +416,6 @@ int setup_signal_stack_sc(unsigned long stack_top, int sig, | |||
| 416 | PT_REGS_AX(regs) = (unsigned long) sig; | 416 | PT_REGS_AX(regs) = (unsigned long) sig; |
| 417 | PT_REGS_DX(regs) = (unsigned long) 0; | 417 | PT_REGS_DX(regs) = (unsigned long) 0; |
| 418 | PT_REGS_CX(regs) = (unsigned long) 0; | 418 | PT_REGS_CX(regs) = (unsigned long) 0; |
| 419 | |||
| 420 | if ((current->ptrace & PT_DTRACE) && (current->ptrace & PT_PTRACED)) | ||
| 421 | ptrace_notify(SIGTRAP); | ||
| 422 | return 0; | 419 | return 0; |
| 423 | } | 420 | } |
| 424 | 421 | ||
| @@ -466,9 +463,6 @@ int setup_signal_stack_si(unsigned long stack_top, int sig, | |||
| 466 | PT_REGS_AX(regs) = (unsigned long) sig; | 463 | PT_REGS_AX(regs) = (unsigned long) sig; |
| 467 | PT_REGS_DX(regs) = (unsigned long) &frame->info; | 464 | PT_REGS_DX(regs) = (unsigned long) &frame->info; |
| 468 | PT_REGS_CX(regs) = (unsigned long) &frame->uc; | 465 | PT_REGS_CX(regs) = (unsigned long) &frame->uc; |
| 469 | |||
| 470 | if ((current->ptrace & PT_DTRACE) && (current->ptrace & PT_PTRACED)) | ||
| 471 | ptrace_notify(SIGTRAP); | ||
| 472 | return 0; | 466 | return 0; |
| 473 | } | 467 | } |
| 474 | 468 | ||
