[tip: locking/core] lockdep: Noinstr annotate warn_bogus_irq_restore()

From: tip-bot2 for Peter Zijlstra
Date: Wed Feb 10 2021 - 09:02:37 EST


The following commit has been merged into the locking/core branch of tip:

Commit-ID: c8cc7e853192d520ab6a5957f5081034103587ae
Gitweb: https://git.kernel.org/tip/c8cc7e853192d520ab6a5957f5081034103587ae
Author: Peter Zijlstra <peterz@xxxxxxxxxxxxx>
AuthorDate: Tue, 09 Feb 2021 09:30:03 +01:00
Committer: Peter Zijlstra <peterz@xxxxxxxxxxxxx>
CommitterDate: Wed, 10 Feb 2021 14:44:39 +01:00

lockdep: Noinstr annotate warn_bogus_irq_restore()

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>
Acked-by: Mark Rutland <mark.rutland@xxxxxxx>
Acked-by: Randy Dunlap <rdunlap@xxxxxxxxxxxxx> # build-tested
Link: https://lkml.kernel.org/r/YCKyYg53mMp4E7YI@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
---
kernel/locking/irqflag-debug.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/kernel/locking/irqflag-debug.c b/kernel/locking/irqflag-debug.c
index 9603d20..810b503 100644
--- a/kernel/locking/irqflag-debug.c
+++ b/kernel/locking/irqflag-debug.c
@@ -4,8 +4,10 @@
#include <linux/export.h>
#include <linux/irqflags.h>

-void warn_bogus_irq_restore(void)
+noinstr void warn_bogus_irq_restore(void)
{
+ instrumentation_begin();
WARN_ONCE(1, "raw_local_irq_restore() called with IRQs enabled\n");
+ instrumentation_end();
}
EXPORT_SYMBOL(warn_bogus_irq_restore);