summaryrefslogtreecommitdiffstats
path: root/kernel
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2011-02-06 21:05:15 +0100
committerLinus Torvalds <torvalds@linux-foundation.org>2011-02-06 21:05:15 +0100
commitf0adc82064a5c28b34bdbc18e2d178c32094770b (patch)
tree42c051d53c978c722687a2dc341f2b54db271417 /kernel
parentMerge branch 'irq-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kern... (diff)
parentMerge branch 'timers/locking' (diff)
downloadlinux-f0adc82064a5c28b34bdbc18e2d178c32094770b.tar.xz
linux-f0adc82064a5c28b34bdbc18e2d178c32094770b.zip
Merge branch 'timers-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
* 'timers-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: lockdep, timer: Fix del_timer_sync() annotation RTC: Prevents a division by zero in kernel code.
Diffstat (limited to 'kernel')
-rw-r--r--kernel/timer.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/kernel/timer.c b/kernel/timer.c
index 43ca9936f2d0..d53ce66daea0 100644
--- a/kernel/timer.c
+++ b/kernel/timer.c
@@ -969,10 +969,14 @@ EXPORT_SYMBOL(try_to_del_timer_sync);
int del_timer_sync(struct timer_list *timer)
{
#ifdef CONFIG_LOCKDEP
+ unsigned long flags;
+
+ raw_local_irq_save(flags);
local_bh_disable();
lock_map_acquire(&timer->lockdep_map);
lock_map_release(&timer->lockdep_map);
- local_bh_enable();
+ _local_bh_enable();
+ raw_local_irq_restore(flags);
#endif
/*
* don't use it in hardirq context, because it