diff options
author | Silas Boyd-Wickizer <sbw@mit.edu> | 2012-09-23 20:27:32 +0200 |
---|---|---|
committer | Jean Delvare <khali@endymion.delvare> | 2012-09-23 20:27:32 +0200 |
commit | 641f14560035bbb86500ea4b3a27ad27f034725b (patch) | |
tree | acf190876e015304f959294c37b302e904380baa /drivers/ssb | |
parent | 1ec3ddfd27a77db55b8c0e80bcd27c656473fb96 (diff) |
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>
Diffstat (limited to 'drivers/ssb')
0 files changed, 0 insertions, 0 deletions