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);
pgp3sCkpMjJG5.pgp
Description: PGP signature

