lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20140529075723.GA30445@twins.programming.kicks-ass.net>
Date:	Thu, 29 May 2014 09:57:23 +0200
From:	Peter Zijlstra <peterz@...radead.org>
To:	Sasha Levin <sasha.levin@...cle.com>
Cc:	Ingo Molnar <mingo@...nel.org>, acme@...stprotocols.net,
	LKML <linux-kernel@...r.kernel.org>,
	Thomas Gleixner <tglx@...utronix.de>,
	Dave Jones <davej@...hat.com>
Subject: Re: perf: use after free in perf_remove_from_context

On Wed, May 28, 2014 at 07:52:07PM -0400, Sasha Levin wrote:
> On 05/14/2014 12:35 PM, Peter Zijlstra wrote:
> > On Wed, May 14, 2014 at 12:32:26PM -0400, Sasha Levin wrote:
> >> > -----BEGIN PGP SIGNED MESSAGE-----
> >> > Hash: SHA1
> >> > 
> >> > On 05/14/2014 12:29 PM, Peter Zijlstra wrote:
> >>> > > On Mon, May 12, 2014 at 11:42:33AM -0400, Sasha Levin wrote:
> >>>> > >> Hi all,
> >>>> > >> 
> >>>> > >> While fuzzing with trinity inside a KVM tools guest running the latest -next kernel I've stumbled on the following spew. Maybe related to the very recent change in freeing on task exit?
> >>>> > >> 
> >>>> > >> [ 2509.827261] general protection fault: 0000 [#1] PREEMPT SMP DEBUG_PAGEALLOC [ 2509.830379] Dumping ftrace buffer: [ 2509.830379]    (ftrace buffer empty) [ 2509.830379] Modules linked in: [ 2509.830379] CPU: 47 PID: 43306 Comm: trinity-c126 Tainted: G        W     3.15.0-rc5-next-20140512-sasha-00019-ga20bc00-dirty #456
> >>> > > 
> >>> > > Any particular trinity setup? And would you happen to have the seed of that run?
> >> > 
> >> > Nothing special about trinity options. 400 threads and blacklisting some of the
> >> > destructive syscalls (umount, reboot, etc).
> >> > 
> >> > I don't have the seed, but that problem did reproduce again tonight so I can test
> >> > out debug code if you have something in mind.
> > Nah, I drew a pretty big blank, which is why I wanted to see if I could
> > reproduce. If you could share your trinity cmdline I'd be much obliged.
> > While I did manage to clone (the repo moved since last time) and build
> > it, I'm not really that handy with it and want to avoid destroying my
> > machine if possible ;-)
> 
> Anything I could do to help out with this? It reproduces pretty easily on my
> configuration so I'd be happy to test out whatever might help.

Yeah, it takes me days to test anything, and my last guess panned out to
nothing, at which point I decided I needed to look at the things I'd
neglected for a bit :/

Could you see if the below makes any difference? I'll try and get back
to tracking this.

---
 kernel/events/core.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/kernel/events/core.c b/kernel/events/core.c
index 9efb1e7858ac..851dc9dc5643 100644
--- a/kernel/events/core.c
+++ b/kernel/events/core.c
@@ -7497,8 +7497,10 @@ static void perf_event_exit_task_context(struct task_struct *child, int ctxn)
 	 */
 	mutex_lock(&child_ctx->mutex);
 
+	rcu_read_lock();
 	list_for_each_entry_rcu(child_event, &child_ctx->event_list, event_entry)
 		__perf_event_exit_task(child_event, child_ctx, child);
+	rcu_read_unlock();
 
 	mutex_unlock(&child_ctx->mutex);
 

Content of type "application/pgp-signature" skipped

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ