Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6f50248e authored by Martin Schwidefsky's avatar Martin Schwidefsky Committed by Martin Schwidefsky
Browse files

[S390] duplicate SIGTRAP on signal delivery.



The code in do_signal sets the TIF_SINGLE_STEP bit and calls
tracehook_signal_handler after the signal frame has been set up.
This causes two SIGTRAP signals to be delivered to the tracer.
Stop setting the TIF_SINGLE_STEP bit in do_signal to get the
correct number of SIGTRAPs.

Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
parent f8d5faf7
Loading
Loading
Loading
Loading
+1 −9
Original line number Original line Diff line number Diff line
@@ -499,19 +499,11 @@ void do_signal(struct pt_regs *regs)
			if (test_thread_flag(TIF_RESTORE_SIGMASK))
			if (test_thread_flag(TIF_RESTORE_SIGMASK))
				clear_thread_flag(TIF_RESTORE_SIGMASK);
				clear_thread_flag(TIF_RESTORE_SIGMASK);


			/*
			 * If we would have taken a single-step trap
			 * for a normal instruction, act like we took
			 * one for the handler setup.
			 */
			if (current->thread.per_info.single_step)
				set_thread_flag(TIF_SINGLE_STEP);

			/*
			/*
			 * Let tracing know that we've done the handler setup.
			 * Let tracing know that we've done the handler setup.
			 */
			 */
			tracehook_signal_handler(signr, &info, &ka, regs,
			tracehook_signal_handler(signr, &info, &ka, regs,
					 test_thread_flag(TIF_SINGLE_STEP));
					current->thread.per_info.single_step);
		}
		}
		return;
		return;
	}
	}