Messages in this thread Patch in this message | | | Subject | [PATCH] perf_counter: fix double list iteration | From | Peter Zijlstra <> | Date | Thu, 06 Aug 2009 18:06:26 +0200 |
| |
On Thu, 2009-08-06 at 17:38 +0200, Peter Zijlstra wrote: > On Thu, 2009-08-06 at 08:26 +0200, Brice Goglin wrote: > > Hello Ingo > > > > I finally managed to test the threaded perfcounter statistics (thanks a > > lot for implementing it). I am running 2.6.31-rc5 (with the AMD > > magny-cours patches but I don't think they matter here). I am trying to > > measure local/remote memory accesses per thread during the well-known > > stream benchmark. It's compiled with OpenMP using 16 threads on a > > quad-socket quad-core barcelona machine. > > > > Command line is: > > /mnt/scratch/bgoglin/cpunode/linux-2.6.31/tools/perf/perf record -f -s > > -e r1000001e0 -e r1000002e0 -e r1000004e0 -e r1000008e0 ./stream > > > > It seems to work fine with a single -e <counter> on the command line > > while it crashes when there are at least 2 of them. > > It seems to work fine without -s as well. > > OK, I can reproduce OOPSen this way, got me baffled though. > > I'll prod at it some...
D'0h really dumb mistake...
--- Subject: perf_counter: fix double list iteration
A silly copy-paste resulted in a messed up iteration which would cause an OOPS.
Reported-by: Brice Goglin <Brice.Goglin@inria.fr> Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl> --- kernel/perf_counter.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/kernel/perf_counter.c b/kernel/perf_counter.c index 06d210c..6da7611 100644 --- a/kernel/perf_counter.c +++ b/kernel/perf_counter.c @@ -1104,7 +1104,7 @@ static void perf_counter_sync_stat(struct perf_counter_context *ctx, __perf_counter_sync_stat(counter, next_counter); counter = list_next_entry(counter, event_entry); - next_counter = list_next_entry(counter, event_entry); + next_counter = list_next_entry(next_counter, event_entry); } }
| |