OSDN Git Service

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)
committerHeiko Carstens <hca@linux.ibm.com>
Sun, 12 Dec 2021 17:52:26 +0000 (18:52 +0100)
commitc9b12b59e2ea4c3c7cedec7efb071b649652f3a9
treedfbe454db40c768b6c0955ee0846122ab06fdbd4
parent5dcf0c3084eb098bbb702f2f5ee55666047997d4
s390/entry: fix duplicate tracking of irq nesting level

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>
arch/s390/kernel/irq.c