From 3d9dd6d278fa333853a06eb37da533a374855dff Mon Sep 17 00:00:00 2001 From: Linus Torvalds Date: Mon, 1 Sep 2003 10:05:56 -0700 Subject: Fix del_timer_sync() SMP memory ordering (from Tejun Huh ) From Tejun's posting: > > This patch fixes a race between del_timer_sync and recursive timers. > Current implementation allows the value of timer->base that is used > for timer_pending test to be fetched before finishing running_timer > test, so it's possible for a recursive time to be pending after > del_timer_sync. Adding smp_rmb before timer_pending removes the race. --- kernel/timer.c | 1 + 1 file changed, 1 insertion(+) (limited to 'kernel/timer.c') diff --git a/kernel/timer.c b/kernel/timer.c index ab083d12eb3a..2c8d770c5876 100644 --- a/kernel/timer.c +++ b/kernel/timer.c @@ -338,6 +338,7 @@ del_again: break; } } + smp_rmb(); if (timer_pending(timer)) goto del_again; -- cgit v1.2.3