s390/entry: fix duplicate tracking of irq nesting level
authorSven Schnelle <svens@linux.ibm.com>
Mon, 6 Dec 2021 10:50:16 +0000 (11:50 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 22 Dec 2021 08:32:36 +0000 (09:32 +0100)
commit2eeff00926e572e4ddb7f40f2fc452abb1a4c7d4
tree1c1ee8b4c67a8f924919b640dcefd572d1a56319
parentb08b3bfcc720686cd73888ab20111acd9cbfcb19
s390/entry: fix duplicate tracking of irq nesting level

commit c9b12b59e2ea4c3c7cedec7efb071b649652f3a9 upstream.

In the current code, when exiting from idle, rcu_irq_enter() is
called twice during irq entry:

irq_entry_enter()-> rcu_irq_enter()
irq_enter() -> rcu_irq_enter()

This may lead to wrong results from rcu_is_cpu_rrupt_from_idle()
because of a wrong dynticks nmi nesting count. Fix this by only
calling irq_enter_rcu().

Cc: <stable@vger.kernel.org> # 5.12+
Reported-by: Mark Rutland <mark.rutland@arm.com>
Fixes: 56e62a737028 ("s390: convert to generic entry")
Signed-off-by: Sven Schnelle <svens@linux.ibm.com>
Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
arch/s390/kernel/irq.c