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 7362d58efc2..cc9c2350e41 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,  			 struct k_sigaction *ka, siginfo_t *info)  {  	sigset_t *oldset = sigmask_to_save(); +	int singlestep = 0;  	unsigned long sp;  	int err; +	if ((current->ptrace & PT_DTRACE) && (current->ptrace & PT_PTRACED)) +		singlestep = 1; +  	/* Did we come from a system call? */  	if (PT_REGS_SYSCALL_NR(regs) >= 0) {  		/* If so, check system call restarting.. */ @@ -61,7 +65,7 @@ static void handle_signal(struct pt_regs *regs, unsigned long signr,  	if (err)  		force_sigsegv(signr, current);  	else -		signal_delivered(signr, info, ka, regs, 0); +		signal_delivered(signr, info, ka, regs, singlestep);  }  static int kern_do_signal(struct pt_regs *regs) diff --git a/arch/x86/um/signal.c b/arch/x86/um/signal.c index a508cea1350..ba7363ecf89 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,  	PT_REGS_AX(regs) = (unsigned long) sig;  	PT_REGS_DX(regs) = (unsigned long) 0;  	PT_REGS_CX(regs) = (unsigned long) 0; - -	if ((current->ptrace & PT_DTRACE) && (current->ptrace & PT_PTRACED)) -		ptrace_notify(SIGTRAP);  	return 0;  } @@ -466,9 +463,6 @@ int setup_signal_stack_si(unsigned long stack_top, int sig,  	PT_REGS_AX(regs) = (unsigned long) sig;  	PT_REGS_DX(regs) = (unsigned long) &frame->info;  	PT_REGS_CX(regs) = (unsigned long) &frame->uc; - -	if ((current->ptrace & PT_DTRACE) && (current->ptrace & PT_PTRACED)) -		ptrace_notify(SIGTRAP);  	return 0;  }  |