acpi_pad: fix power_saving thread deadlock
authorStuart Hayes <Stuart_Hayes@Dell.com>
Wed, 13 Jun 2012 21:10:45 +0000 (16:10 -0500)
committerBen Hutchings <ben@decadent.org.uk>
Wed, 4 Jul 2012 04:44:32 +0000 (05:44 +0100)
commit9a0fcfb4bd9264ed3a442cb86097cea6aaa9772b
tree02e9af8a721d1fa964c6ac84190945121f3deb3f
parenta7a3681651e007451b164e93699b349ba64496d3
acpi_pad: fix power_saving thread deadlock

commit 5f1601261050251a5ca293378b492a69d590dacb upstream.

The acpi_pad driver can get stuck in destroy_power_saving_task()
waiting for kthread_stop() to stop a power_saving thread.  The problem
is that the isolated_cpus_lock mutex is owned when
destroy_power_saving_task() calls kthread_stop(), which waits for a
power_saving thread to end, and the power_saving thread tries to
acquire the isolated_cpus_lock when it calls round_robin_cpu().  This
patch fixes the issue by making round_robin_cpu() use its own mutex.

https://bugzilla.kernel.org/show_bug.cgi?id=42981

Signed-off-by: Stuart Hayes <Stuart_Hayes@Dell.com>
Signed-off-by: Len Brown <len.brown@intel.com>
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
drivers/acpi/acpi_pad.c