From: Thomas Gleixner Called with clockevents_lock held and interrupts disabled already. Signed-off-by: Thomas Gleixner --- kernel/time/clockevents.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) Index: linux/kernel/time/clockevents.c =================================================================== --- linux.orig/kernel/time/clockevents.c +++ linux/kernel/time/clockevents.c @@ -491,14 +491,12 @@ void clockevents_handle_noop(struct cloc * @old: device to release (can be NULL) * @new: device to request (can be NULL) * - * Called from the notifier chain. clockevents_lock is held already + * Called from various tick functions with clockevents_lock held and + * interrupts disabled. */ void clockevents_exchange_device(struct clock_event_device *old, struct clock_event_device *new) { - unsigned long flags; - - local_irq_save(flags); /* * Caller releases a clock event device. We queue it into the * released list and do a notify add later. @@ -514,7 +512,6 @@ void clockevents_exchange_device(struct BUG_ON(new->mode != CLOCK_EVT_MODE_UNUSED); clockevents_shutdown(new); } - local_irq_restore(flags); } /**