All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] perf/rapl: fix crash in rapl_scale()
@ 2015-01-22 20:38 Stephane Eranian
  2015-01-23  8:39 ` Peter Zijlstra
  2015-01-28 14:29 ` [tip:perf/urgent] perf/rapl: Fix " tip-bot for Stephane Eranian
  0 siblings, 2 replies; 3+ messages in thread
From: Stephane Eranian @ 2015-01-22 20:38 UTC (permalink / raw)
  To: linux-kernel; +Cc: peterz, mingo, vincent.weaver, cl, paulus, acme


This patch fixes a systematic crash in rapl_scale()
due to an invalid pointer.

The bug was introduced by commit:
commit 89cbc76768c2fa4ed95545bf961f3a14ddfeed21
Author: Christoph Lameter <cl@linux.com>
Date:   Sun Aug 17 12:30:40 2014 -0500

    x86: Replace __get_cpu_var uses


The fix is simple. Just put the parenthesis where it needs
to be, i.e., around rapl_pmu. To my surprise, the compiler
was not complaining about passing an integer instead of a
pointer.

Reported-by: Vince Weaver <vincent.weaver@maine.edu>
Signed-off-by: Stephane Eranian <eranian@google.com>
Tested-by: Vince Weaver <vincent.weaver@maine.edu>
--

diff --git a/arch/x86/kernel/cpu/perf_event_intel_rapl.c b/arch/x86/kernel/cpu/perf_event_intel_rapl.c
index 6e434f8..c4bb8b8 100644
--- a/arch/x86/kernel/cpu/perf_event_intel_rapl.c
+++ b/arch/x86/kernel/cpu/perf_event_intel_rapl.c
@@ -142,7 +142,7 @@ static inline u64 rapl_scale(u64 v)
 	 * or use ldexp(count, -32).
 	 * Watts = Joules/Time delta
 	 */
-	return v << (32 - __this_cpu_read(rapl_pmu->hw_unit));
+	return v << (32 - __this_cpu_read(rapl_pmu)->hw_unit);
 }
 
 static u64 rapl_event_update(struct perf_event *event)

^ permalink raw reply related	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2015-01-28 21:16 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-01-22 20:38 [PATCH] perf/rapl: fix crash in rapl_scale() Stephane Eranian
2015-01-23  8:39 ` Peter Zijlstra
2015-01-28 14:29 ` [tip:perf/urgent] perf/rapl: Fix " tip-bot for Stephane Eranian

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.