| From 2e44d2bf047d2b6df91ab1caa4a8f8a69520be5a Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Mon, 11 Jan 2021 09:08:59 +0800 |
| Subject: rcu: Remove spurious instrumentation_end() in rcu_nmi_enter() |
| |
| From: Zhouyi Zhou <zhouzhouyi@gmail.com> |
| |
| [ Upstream commit 6494ccb93271bee596a12db32ff44867d5be2321 ] |
| |
| In rcu_nmi_enter(), there is an erroneous instrumentation_end() in the |
| second branch of the "if" statement. Oddly enough, "objtool check -f |
| vmlinux.o" fails to complain because it is unable to correctly cover |
| all cases. Instead, objtool visits the third branch first, which marks |
| following trace_rcu_dyntick() as visited. This commit therefore removes |
| the spurious instrumentation_end(). |
| |
| Fixes: 04b25a495bd6 ("rcu: Mark rcu_nmi_enter() call to rcu_cleanup_after_idle() noinstr") |
| Reported-by Neeraj Upadhyay <neeraju@codeaurora.org> |
| Signed-off-by: Zhouyi Zhou <zhouzhouyi@gmail.com> |
| Signed-off-by: Paul E. McKenney <paulmck@kernel.org> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| kernel/rcu/tree.c | 1 - |
| 1 file changed, 1 deletion(-) |
| |
| diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c |
| index 84a3fe09630b..e7d8a0d8ea7c 100644 |
| --- a/kernel/rcu/tree.c |
| +++ b/kernel/rcu/tree.c |
| @@ -1072,7 +1072,6 @@ noinstr void rcu_nmi_enter(void) |
| } else if (!in_nmi()) { |
| instrumentation_begin(); |
| rcu_irq_enter_check_tick(); |
| - instrumentation_end(); |
| } else { |
| instrumentation_begin(); |
| } |
| -- |
| 2.30.2 |
| |