]> git.karo-electronics.de Git - karo-tx-linux.git/commit
hwmon: (coretemp) Use get_online_cpus to avoid races involving CPU hotplug
authorSilas Boyd-Wickizer <sbw@mit.edu>
Wed, 8 Aug 2012 22:42:14 +0000 (08:42 +1000)
committerStephen Rothwell <sfr@canb.auug.org.au>
Wed, 8 Aug 2012 22:42:14 +0000 (08:42 +1000)
commit4ac12236d93b961b1df821d0d5a284008b3de2af
tree1f2d42cb8e8e7585847a5428bd68c4609fd1d9e3
parente546a9c47f73052388f8689d1b9cdc0db588f3db
hwmon: (coretemp) Use get_online_cpus to avoid races involving CPU hotplug

coretemp_init loops with for_each_online_cpu, adding platform_devices
and sysfs interfaces, then calls register_hotcpu_notifier.  There is a
race if a CPU is offlined or onlined after the loop, but before
register_hotcpu_notifier.  The race might result in the absence of a
platform_device+sysfs interface for an online CPU, or the presence of
a platform_device+sysfs interface for an offline CPU.  A similar race
occurs during coretemp_exit, after the module calls
unregister_hotcpu_notifier, but before it unregisters all devices, a
CPU might offline and a device for an offline CPU will exist for a
short while.

This fix surrounds for_each_online_cpu and register_hotcpu_notifier
with get_online_cpus+put_online_cpus; and surrounds
unregister_hotcpu_notifier and device unregistering with
get_online_cpus+put_online_cpus.

Build tested.

Signed-off-by: Silas Boyd-Wickizer <sbw@mit.edu>
Signed-off-by: Jean Delvare <khali@linux-fr.org>
drivers/hwmon/coretemp.c