Messages in this thread | | | Date | Mon, 14 Feb 2011 22:51:25 +0800 | From | Yong Zhang <> | Subject | Re: lockdep: possible reason: unannotated irqs-off. (was: Re: Linux 2.6.38-rc4) |
| |
On Tue, Feb 08, 2011 at 03:18:00PM +0100, Peter Zijlstra wrote: > Subject: lockdep, timer: Revert the del_timer_sync() annotation > > Both attempts at trying to allow softirq usage failed, revert for this > release and try again later. > > Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl> > --- > kernel/timer.c | 8 +++----- > 1 files changed, 3 insertions(+), 5 deletions(-) > > diff --git a/kernel/timer.c b/kernel/timer.c > index 343ff27..c848cd8 100644 > --- a/kernel/timer.c > +++ b/kernel/timer.c > @@ -959,7 +959,7 @@ EXPORT_SYMBOL(try_to_del_timer_sync); > * > * Synchronization rules: Callers must prevent restarting of the timer, > * otherwise this function is meaningless. It must not be called from > - * hardirq contexts. The caller must not hold locks which would prevent > + * interrupt contexts. The caller must not hold locks which would prevent
I think we don't need to revert this comment.
> * completion of the timer's handler. The timer's handler must not call > * add_timer_on(). Upon exit the timer is not queued and the handler is > * not running on any CPU. > @@ -971,12 +971,10 @@ int del_timer_sync(struct timer_list *timer) > #ifdef CONFIG_LOCKDEP > unsigned long flags; > > - raw_local_irq_save(flags); > - local_bh_disable(); > + local_irq_save(flags);
Going back to local_irq_save()/local_irq_restore() doesn't prevent it from using in softirq context.
Thanks, Yong
| |