diff options
Diffstat (limited to 'drivers/hwmon/coretemp.c')
| -rw-r--r-- | drivers/hwmon/coretemp.c | 5 | 
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/hwmon/coretemp.c b/drivers/hwmon/coretemp.c index 0fa356fe82c..984a3f13923 100644 --- a/drivers/hwmon/coretemp.c +++ b/drivers/hwmon/coretemp.c @@ -815,17 +815,20 @@ static int __init coretemp_init(void)  	if (err)  		goto exit; +	get_online_cpus();  	for_each_online_cpu(i)  		get_core_online(i);  #ifndef CONFIG_HOTPLUG_CPU  	if (list_empty(&pdev_list)) { +		put_online_cpus();  		err = -ENODEV;  		goto exit_driver_unreg;  	}  #endif  	register_hotcpu_notifier(&coretemp_cpu_notifier); +	put_online_cpus();  	return 0;  #ifndef CONFIG_HOTPLUG_CPU @@ -840,6 +843,7 @@ static void __exit coretemp_exit(void)  {  	struct pdev_entry *p, *n; +	get_online_cpus();  	unregister_hotcpu_notifier(&coretemp_cpu_notifier);  	mutex_lock(&pdev_list_mutex);  	list_for_each_entry_safe(p, n, &pdev_list, list) { @@ -848,6 +852,7 @@ static void __exit coretemp_exit(void)  		kfree(p);  	}  	mutex_unlock(&pdev_list_mutex); +	put_online_cpus();  	platform_driver_unregister(&coretemp_driver);  }  |