From: James Hogan Date: Wed, 27 Feb 2013 16:16:38 +0000 (+0000) Subject: metag: perf: fix wrap handling in delta calculation X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=c43ca04b5e7854b3996f84a495e4553941e76266;p=linux-beck.git metag: perf: fix wrap handling in delta calculation When calculating the delta, mask with MAX_PERIOD (24 bits) to handle wrapping, which particularly happens with periodic sampling since the value is intentionally set so that it will overflow soon. Signed-off-by: James Hogan Cc: Peter Zijlstra Cc: Paul Mackerras Cc: Ingo Molnar Cc: Arnaldo Carvalho de Melo --- diff --git a/arch/metag/kernel/perf/perf_event.c b/arch/metag/kernel/perf/perf_event.c index f38bf6d4dc55..8096db2a550b 100644 --- a/arch/metag/kernel/perf/perf_event.c +++ b/arch/metag/kernel/perf/perf_event.c @@ -211,7 +211,7 @@ again: /* * Calculate the delta and add it to the counter. */ - delta = new_raw_count - prev_raw_count; + delta = (new_raw_count - prev_raw_count) & MAX_PERIOD; local64_add(delta, &event->count); }