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

Commit 1be53963 authored by Oleg Nesterov's avatar Oleg Nesterov Committed by Linus Torvalds
Browse files

signals: check ->group_stop_count after tracehook_get_signal()



Move the call to do_signal_stop() down, after tracehook call.  This makes
->group_stop_count condition visible to tracers before do_signal_stop()
will participate in this group-stop.

Currently the patch has no effect, tracehook_get_signal() always returns 0.

Signed-off-by: default avatarOleg Nesterov <oleg@redhat.com>
Acked-by: default avatarRoland McGrath <roland@redhat.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent ad09750b
Loading
Loading
Loading
Loading
+4 −5
Original line number Diff line number Diff line
@@ -1840,11 +1840,6 @@ int get_signal_to_deliver(siginfo_t *info, struct k_sigaction *return_ka,

	for (;;) {
		struct k_sigaction *ka;

		if (unlikely(signal->group_stop_count > 0) &&
		    do_signal_stop(0))
			goto relock;

		/*
		 * Tracing can induce an artifical signal and choose sigaction.
		 * The return value in @signr determines the default action,
@@ -1856,6 +1851,10 @@ int get_signal_to_deliver(siginfo_t *info, struct k_sigaction *return_ka,
		if (unlikely(signr != 0))
			ka = return_ka;
		else {
			if (unlikely(signal->group_stop_count > 0) &&
			    do_signal_stop(0))
				goto relock;

			signr = dequeue_signal(current, &current->blocked,
					       info);