timers: remove memory barriers
PATCH 4/5 timers: remove memory barriers
del_timer() and __run_timers() use smp_wmb() before clearing timer's pending flag. It was needed because __mod_timer() did not locked old_base if the timer is not pending, so __mod_timer()->internal_add_timer() can race with del_timer()->list_del().
With the previous patch these functions are serialized through base->lock, so the barrier can be killed.
Still needed in del_timer_sync(), because it clears ->_base.
Signed-off-by Oleg Nesterov <[email protected]>
kernel/timer.c renamed from kernel/timer.c~4_BARR +0 -3
@@ -337,8 +337,6 @@ repeat: goto repeat; }list_del (&timer->entry); -/* Need to make sure that anybody who sees a NULL base also sees the list ops */ -smp_wmb ();__set_base (timer, base,0 );spin_unlock_irqrestore (&base->lock, flags);
@@ -496,7 +494,6 @@ repeat:list_del (&timer->entry);set_running_timer (base, timer); -smp_wmb ();__set_base (timer, base,0 );spin_unlock_irq (&base->lock); {