On Tue, Feb 09, 2021 at 09:34:10AM +0100, Peter Zijlstra wrote: > > Subject: lockdep: Noinstr annotate warn_bogus_irq_restore() > From: Peter Zijlstra <peterz@xxxxxxxxxxxxx> > Date: Tue Feb 9 09:30:03 CET 2021 > > vmlinux.o: warning: objtool: lock_is_held_type()+0x107: call to warn_bogus_irq_restore() leaves .noinstr.text section > > As per the general rule that WARNs are allowed to violate noinstr to > get out, annotate it away. > > Fixes: 997acaf6b4b5 ("lockdep: report broken irq restoration") > Reported-by: Randy Dunlap <rdunlap@xxxxxxxxxxxxx> > Signed-off-by: Peter Zijlstra (Intel) <peterz@xxxxxxxxxxxxx> Whoops; sorry for missing that! Acked-by: Mark Rutland <mark.rutland@xxxxxxx> Mark. > --- > include/linux/irqflags.h | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > --- a/include/linux/irqflags.h > +++ b/include/linux/irqflags.h > @@ -153,8 +153,11 @@ do { \ > extern void warn_bogus_irq_restore(void); > #define raw_check_bogus_irq_restore() \ > do { \ > - if (unlikely(!arch_irqs_disabled())) \ > + if (unlikely(!arch_irqs_disabled())) { \ > + instrumentation_begin(); \ > warn_bogus_irq_restore(); \ > + instrumentation_end(); \ > + } \ > } while (0) > #else > #define raw_check_bogus_irq_restore() do { } while (0)