diff options
author | Tejun Heo <tj@kernel.org> | 2012-12-21 20:57:05 -0500 |
---|---|---|
committer | Tejun Heo <tj@kernel.org> | 2012-12-28 16:40:16 -0500 |
commit | 4d899be584d4b4c5d6b49d655176b25cebf6ff1a (patch) | |
tree | 690b5ff0a8c1c334f3932b6ef22b9684b5ef8b6b | |
parent | ba0c96cd9a361693b0bae409510d614dc0e26d0f (diff) |
x86/mce: don't use [delayed_]work_pending()
There's no need to test whether a (delayed) work item in pending
before queueing, flushing or cancelling it. Most uses are unnecessary
and quite a few of them are buggy.
Remove unnecessary pending tests from x86/mce. Only compile tested.
v2: Local var work removed from mce_schedule_work() as suggested by
Borislav.
Signed-off-by: Tejun Heo <tj@kernel.org>
Acked-by: Borislav Petkov <bp@alien8.de>
Cc: Tony Luck <tony.luck@intel.com>
Cc: linux-edac@vger.kernel.org
-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)) |