diff options
| -rw-r--r-- | arch/x86/kernel/cpu/mcheck/mce.c | 14 |
1 files changed, 3 insertions, 11 deletions
diff --git a/arch/x86/kernel/cpu/mcheck/mce.c b/arch/x86/kernel/cpu/mcheck/mce.c index 80dbda84f1c3..fc7608a89d93 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) | |||
| 512 | 512 | ||
| 513 | static void mce_schedule_work(void) | 513 | static void mce_schedule_work(void) |
| 514 | { | 514 | { |
| 515 | if (!mce_ring_empty()) { | 515 | if (!mce_ring_empty()) |
| 516 | struct work_struct *work = &__get_cpu_var(mce_work); | 516 | schedule_work(&__get_cpu_var(mce_work)); |
| 517 | if (!work_pending(work)) | ||
| 518 | schedule_work(work); | ||
| 519 | } | ||
| 520 | } | 517 | } |
| 521 | 518 | ||
| 522 | DEFINE_PER_CPU(struct irq_work, mce_irq_work); | 519 | DEFINE_PER_CPU(struct irq_work, mce_irq_work); |
| @@ -1351,12 +1348,7 @@ int mce_notify_irq(void) | |||
| 1351 | /* wake processes polling /dev/mcelog */ | 1348 | /* wake processes polling /dev/mcelog */ |
| 1352 | wake_up_interruptible(&mce_chrdev_wait); | 1349 | wake_up_interruptible(&mce_chrdev_wait); |
| 1353 | 1350 | ||
| 1354 | /* | 1351 | if (mce_helper[0]) |
| 1355 | * There is no risk of missing notifications because | ||
| 1356 | * work_pending is always cleared before the function is | ||
| 1357 | * executed. | ||
| 1358 | */ | ||
| 1359 | if (mce_helper[0] && !work_pending(&mce_trigger_work)) | ||
| 1360 | schedule_work(&mce_trigger_work); | 1352 | schedule_work(&mce_trigger_work); |
| 1361 | 1353 | ||
| 1362 | if (__ratelimit(&ratelimit)) | 1354 | if (__ratelimit(&ratelimit)) |
