|
@@ -2451,6 +2451,12 @@ static __init int mcheck_init_device(void)
|
|
|
for_each_online_cpu(i) {
|
|
|
err = mce_device_create(i);
|
|
|
if (err) {
|
|
|
+ /*
|
|
|
+ * Register notifier anyway (and do not unreg it) so
|
|
|
+ * that we don't leave undeleted timers, see notifier
|
|
|
+ * callback above.
|
|
|
+ */
|
|
|
+ __register_hotcpu_notifier(&mce_cpu_notifier);
|
|
|
cpu_notifier_register_done();
|
|
|
goto err_device_create;
|
|
|
}
|
|
@@ -2471,10 +2477,6 @@ static __init int mcheck_init_device(void)
|
|
|
err_register:
|
|
|
unregister_syscore_ops(&mce_syscore_ops);
|
|
|
|
|
|
- cpu_notifier_register_begin();
|
|
|
- __unregister_hotcpu_notifier(&mce_cpu_notifier);
|
|
|
- cpu_notifier_register_done();
|
|
|
-
|
|
|
err_device_create:
|
|
|
/*
|
|
|
* We didn't keep track of which devices were created above, but
|