diff options
| -rw-r--r-- | arch/x86/kernel/cpu/mcheck/mce.c | 10 | 
1 files changed, 6 insertions, 4 deletions
| diff --git a/arch/x86/kernel/cpu/mcheck/mce.c b/arch/x86/kernel/cpu/mcheck/mce.c index bb92f38153b2..9a79c8dbd8e8 100644 --- a/arch/x86/kernel/cpu/mcheck/mce.c +++ b/arch/x86/kernel/cpu/mcheck/mce.c @@ -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 | 
