linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH RFC] acpi: Fix unprotected smp_processor_id() in acpi_processor_cst_has_changed()
@ 2012-02-23 20:58 Paul E. McKenney
  2012-02-28  6:13 ` Srivatsa S. Bhat
  2012-02-28  7:19 ` Yong Zhang
  0 siblings, 2 replies; 6+ messages in thread
From: Paul E. McKenney @ 2012-02-23 20:58 UTC (permalink / raw)
  To: deepthi; +Cc: linux-kernel, lenb, linux-acpi

The acpi_processor_cst_has_changed() function is invoked from a
CPU_ONLINE or CPU_DEAD function, which might well execute on CPU 0
even though the CPU being hotplugged is some other CPU.  In addition,
acpi_processor_cst_has_changed() invokes smp_processor_id() without
protection, resulting in splats when onlining CPUs.

This commit therefore changes the smp_processor_id() to pr->id, as is
used elsewhere in the code, for example, in acpi_processor_add().

This works for me, but I don't claim to understand ACPI.

Signed-off-by: Paul E. McKenney <paul.mckenney@linaro.org>

diff --git a/drivers/acpi/processor_idle.c b/drivers/acpi/processor_idle.c
index 0e8e2de..9e57b06 100644
--- a/drivers/acpi/processor_idle.c
+++ b/drivers/acpi/processor_idle.c
@@ -1159,8 +1159,7 @@ int acpi_processor_cst_has_changed(struct acpi_processor *pr)
 	 * to make the code that updates C-States be called once.
 	 */
 
-	if (smp_processor_id() == 0 &&
-			cpuidle_get_driver() == &acpi_idle_driver) {
+	if (pr->id == 0 && cpuidle_get_driver() == &acpi_idle_driver) {
 
 		cpuidle_pause_and_lock();
 		/* Protect against cpu-hotplug */


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

end of thread, other threads:[~2012-02-28 21:28 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-02-23 20:58 [PATCH RFC] acpi: Fix unprotected smp_processor_id() in acpi_processor_cst_has_changed() Paul E. McKenney
2012-02-28  6:13 ` Srivatsa S. Bhat
2012-02-28  7:19 ` Yong Zhang
2012-02-28 13:30   ` Paul E. McKenney
2012-02-28 20:57     ` Rafael J. Wysocki
2012-02-28 21:27       ` Paul E. McKenney

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).