Prev: Bug in hidraw When a HID Device Contains Multiple Reports
Next: kconfig: print symbol type in help text
From: Stephen Rothwell on 27 Apr 2010 03:40 Hi Frederic, On Thu, 15 Apr 2010 15:37:50 +0200 Frederic Weisbecker <fweisbec(a)gmail.com> wrote: > > When a path restore the flags while irqs are already enabled, we > update the per cpu var redundant_hardirqs_on in a racy fashion > and debug_atomic_inc() warns about this situation. > > In this particular case, we need to explictly disable the irqs before > updating this stat var in order to update it safely. > > Reported-by: Stephen Rothwell <sfr(a)canb.auug.org.au> > Signed-off-by: Frederic Weisbecker <fweisbec(a)gmail.com> > Cc: Peter Zijlstra <peterz(a)infradead.org> > Cc: David Miller <davem(a)davemloft.net> > Cc: Benjamin Herrenschmidt <benh(a)kernel.crashing.org> > --- > kernel/lockdep.c | 4 ++++ > 1 files changed, 4 insertions(+), 0 deletions(-) Ping? Any movement on this? -- Cheers, Stephen Rothwell sfr(a)canb.auug.org.au http://www.canb.auug.org.au/~sfr/
From: Stephen Rothwell on 28 Apr 2010 03:20
Hi Frederic, On Thu, 15 Apr 2010 15:37:50 +0200 Frederic Weisbecker <fweisbec(a)gmail.com> wrote: > > When a path restore the flags while irqs are already enabled, we > update the per cpu var redundant_hardirqs_on in a racy fashion > and debug_atomic_inc() warns about this situation. > > In this particular case, we need to explictly disable the irqs before > updating this stat var in order to update it safely. > > Reported-by: Stephen Rothwell <sfr(a)canb.auug.org.au> > Signed-off-by: Frederic Weisbecker <fweisbec(a)gmail.com> > Cc: Peter Zijlstra <peterz(a)infradead.org> > Cc: David Miller <davem(a)davemloft.net> > Cc: Benjamin Herrenschmidt <benh(a)kernel.crashing.org> > --- > kernel/lockdep.c | 4 ++++ > 1 files changed, 4 insertions(+), 0 deletions(-) > > diff --git a/kernel/lockdep.c b/kernel/lockdep.c > index 78325f8..65d4336 100644 > --- a/kernel/lockdep.c > +++ b/kernel/lockdep.c > @@ -2298,7 +2298,11 @@ void trace_hardirqs_on_caller(unsigned long ip) > return; > > if (unlikely(curr->hardirqs_enabled)) { > + unsigned long flags; > + > + raw_local_irq_save(flags); > debug_atomic_inc(redundant_hardirqs_on); > + raw_local_irq_restore(flags); > return; > } > /* we'll do an OFF -> ON transition: */ I applied this patch to linux-next today and it fixes my PowerPC boot problems, so I will keep it in linux-next until it gets applied to the tip tree or something better comes along. Thanks. -- Cheers, Stephen Rothwell sfr(a)canb.auug.org.au http://www.canb.auug.org.au/~sfr/ |