diff options
Diffstat (limited to 'arch/x86/kernel/cpu/mcheck/mce.c')
| -rw-r--r-- | arch/x86/kernel/cpu/mcheck/mce.c | 18 | 
1 files changed, 5 insertions, 13 deletions
diff --git a/arch/x86/kernel/cpu/mcheck/mce.c b/arch/x86/kernel/cpu/mcheck/mce.c index 80dbda84f1c..9239504b41c 100644 --- a/arch/x86/kernel/cpu/mcheck/mce.c +++ b/arch/x86/kernel/cpu/mcheck/mce.c @@ -512,11 +512,8 @@ int mce_available(struct cpuinfo_x86 *c)  static void mce_schedule_work(void)  { -	if (!mce_ring_empty()) { -		struct work_struct *work = &__get_cpu_var(mce_work); -		if (!work_pending(work)) -			schedule_work(work); -	} +	if (!mce_ring_empty()) +		schedule_work(&__get_cpu_var(mce_work));  }  DEFINE_PER_CPU(struct irq_work, mce_irq_work); @@ -1085,7 +1082,7 @@ void do_machine_check(struct pt_regs *regs, long error_code)  		/*  		 * Set taint even when machine check was not enabled.  		 */ -		add_taint(TAINT_MACHINE_CHECK); +		add_taint(TAINT_MACHINE_CHECK, LOCKDEP_NOW_UNRELIABLE);  		severity = mce_severity(&m, cfg->tolerant, NULL); @@ -1351,12 +1348,7 @@ int mce_notify_irq(void)  		/* wake processes polling /dev/mcelog */  		wake_up_interruptible(&mce_chrdev_wait); -		/* -		 * There is no risk of missing notifications because -		 * work_pending is always cleared before the function is -		 * executed. -		 */ -		if (mce_helper[0] && !work_pending(&mce_trigger_work)) +		if (mce_helper[0])  			schedule_work(&mce_trigger_work);  		if (__ratelimit(&ratelimit)) @@ -2366,7 +2358,7 @@ mce_cpu_callback(struct notifier_block *nfb, unsigned long action, void *hcpu)  	if (action == CPU_POST_DEAD) {  		/* intentionally ignoring frozen here */ -		cmci_rediscover(cpu); +		cmci_rediscover();  	}  	return NOTIFY_OK;  |