Thread (39 messages) 39 messages, 5 authors, 2021-03-31

Re: [PATCH v3 06/11] perf: Add support for SIGTRAP on perf events

From: Oleg Nesterov <oleg@redhat.com>
Date: 2021-03-29 14:27:55
Also in: linux-fsdevel, linux-kselftest, lkml

On 03/29, Peter Zijlstra wrote:
On Thu, Mar 25, 2021 at 09:14:39AM +0100, Marco Elver wrote:
quoted
@@ -6395,6 +6395,13 @@ static void perf_sigtrap(struct perf_event *event)
 {
 	struct kernel_siginfo info;

+	/*
+	 * This irq_work can race with an exiting task; bail out if sighand has
+	 * already been released in release_task().
+	 */
+	if (!current->sighand)
+		return;
This is racy. If "current" has already passed exit_notify(), current->parent
can do release_task() and destroy current->sighand right after the check.
Urgh.. I'm not entirely sure that check is correct, but I always forget
the rules with signal. It could be we ought to be testing PF_EXISTING
instead.
Agreed, PF_EXISTING check makes more sense in any case, the exiting task
can't receive the signal anyway.

Oleg.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help