mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Steven Rostedt <rostedt@kernel.org>
To: "Paul E. McKenney" <paulmck@kernel.org>
Cc: linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org,
	bpf@vger.kernel.org, Masami Hiramatsu <mhiramat@kernel.org>,
	Mathieu Desnoyers <mathieu.desnoyers@efficios.com>,
	Josh Poimboeuf <jpoimboe@kernel.org>,
	Peter Zijlstra <peterz@infradead.org>,
	Ingo Molnar <mingo@kernel.org>, Jiri Olsa <jolsa@kernel.org>,
	Arnaldo Carvalho de Melo <acme@kernel.org>,
	Namhyung Kim <namhyung@kernel.org>,
	Thomas Gleixner <tglx@linutronix.de>,
	Andrii Nakryiko <andrii@kernel.org>,
	Indu Bhagat <indu.bhagat@oracle.com>,
	"Jose E. Marchesi" <jemarch@gnu.org>,
	Beau Belgrave <beaub@linux.microsoft.com>,
	Jens Remus <jremus@linux.ibm.com>,
	Linus Torvalds <torvalds@linux-foundation.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	Jens Axboe <axboe@kernel.dk>, Florian Weimer <fweimer@redhat.com>,
	Sam James <sam@gentoo.org>
Subject: Re: [PATCH v16 09/10] unwind deferred: Use SRCU unwind_deferred_task_work()
Date: Thu, 31 Jul 2025 21:11:46 -0400	[thread overview]
Message-ID: <20250731211146.508d8387@batman.local.home> (raw)
In-Reply-To: <21c67d70-d8c2-4d6b-99d8-2de8f2966621@paulmck-laptop>

On Thu, 31 Jul 2025 17:29:44 -0700
"Paul E. McKenney" <paulmck@kernel.org> wrote:

> > @@ -281,10 +291,15 @@ void unwind_deferred_cancel(struct unwind_work *work)
> >  		return;
> >  
> >  	guard(mutex)(&callback_mutex);
> > -	list_del(&work->list);  
> 
> What happens if unwind_deferred_task_work() finds this item right here...

Should be fine.

> 
> > +	list_del_rcu(&work->list);  
> 
> ...and then unwind_deferred_request() does its WARN_ON_ONCE() check
> against -1 right here?

If unwind_deferred_request() is called after unwind_deferred_cancel()
then that's a bug. As both functions are called by the tracer. The
cancel() function is for the tracer to tell this infrastructure that
it's done with the deferred tracing. If it calls a request() function
after (or during) the call to cancel(), then it's a bug in the tracer.
The tracer is responsible for making sure it will not do any more
requests before calling the cancel() function.

But what the tracer can't do is to know if there's a pending request
still happening and this has to handle that.

> 
> Can't that cause UAF?
> 
> This is quite possibly a stupid question because I am not seeing where to
> apply this patch, so I don't know what other mechanisms might be in place.

Yeah, you were only Cc'd on this patch because it was the only one that
uses RCU. You can see the entire series here:

  https://lore.kernel.org/all/20250729182304.965835871@kernel.org/

Or in patchwork:

  https://patchwork.kernel.org/project/linux-trace-kernel/list/?series=986813

-- Steve


> 
> > +	/* Do not allow any more requests and prevent callbacks */
> > +	work->bit = -1;
> >  
> >  	__clear_bit(bit, &unwind_mask);
> >  
> > +	synchronize_srcu(&unwind_srcu);
> > +
> >  	guard(rcu)();
> >  	/* Clear this bit from all threads */
> >  	for_each_process_thread(g, t) {

  reply	other threads:[~2025-08-01  1:11 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-07-29 18:23 [PATCH v16 00/10] unwind_user: Deferred unwinding infrastructure Steven Rostedt
2025-07-29 18:23 ` [PATCH v16 01/10] unwind_user: Add user space unwinding API with frame pointer support Steven Rostedt
2025-07-29 18:23 ` [PATCH v16 02/10] unwind_user/deferred: Add unwind_user_faultable() Steven Rostedt
2025-07-29 18:23 ` [PATCH v16 03/10] unwind_user/deferred: Add unwind cache Steven Rostedt
2025-07-30  4:55   ` Indu Bhagat
2025-07-30 13:32     ` Steven Rostedt
2025-07-30 23:58       ` Indu Bhagat
2025-07-29 18:23 ` [PATCH v16 04/10] unwind_user/deferred: Add deferred unwinding interface Steven Rostedt
2025-07-29 18:23 ` [PATCH v16 05/10] unwind_user/deferred: Make unwind deferral requests NMI-safe Steven Rostedt
2025-07-29 18:23 ` [PATCH v16 06/10] unwind deferred: Use bitmask to determine which callbacks to call Steven Rostedt
2025-09-20  1:00   ` Josh Poimboeuf
2025-09-21 23:47     ` Steven Rostedt
2025-07-29 18:23 ` [PATCH v16 07/10] unwind deferred: Add unwind_completed mask to stop spurious callbacks Steven Rostedt
2025-07-29 18:23 ` [PATCH v16 08/10] unwind: Add USED bit to only have one conditional on way back to user space Steven Rostedt
2025-07-29 18:23 ` [PATCH v16 09/10] unwind deferred: Use SRCU unwind_deferred_task_work() Steven Rostedt
2025-08-01  0:29   ` Paul E. McKenney
2025-08-01  1:11     ` Steven Rostedt [this message]
2025-09-20  0:31   ` Josh Poimboeuf
2025-09-21 23:35     ` Steven Rostedt
2025-07-29 18:23 ` [PATCH v16 10/10] unwind: Finish up unwind when a task exits Steven Rostedt
2025-08-02  0:14 ` [PATCH v16 00/10] unwind_user: Deferred unwinding infrastructure patchwork-bot+netdevbpf

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20250731211146.508d8387@batman.local.home \
    --to=rostedt@kernel.org \
    --cc=acme@kernel.org \
    --cc=akpm@linux-foundation.org \
    --cc=andrii@kernel.org \
    --cc=axboe@kernel.dk \
    --cc=beaub@linux.microsoft.com \
    --cc=bpf@vger.kernel.org \
    --cc=fweimer@redhat.com \
    --cc=indu.bhagat@oracle.com \
    --cc=jemarch@gnu.org \
    --cc=jolsa@kernel.org \
    --cc=jpoimboe@kernel.org \
    --cc=jremus@linux.ibm.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-trace-kernel@vger.kernel.org \
    --cc=mathieu.desnoyers@efficios.com \
    --cc=mhiramat@kernel.org \
    --cc=mingo@kernel.org \
    --cc=namhyung@kernel.org \
    --cc=paulmck@kernel.org \
    --cc=peterz@infradead.org \
    --cc=sam@gentoo.org \
    --cc=tglx@linutronix.de \
    --cc=torvalds@linux-foundation.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®