Commit f46f27a5 authored by James Morse's avatar James Morse Committed by Will Deacon

arm64: Fix incorrect irqflag restore for priority masking for compat

Commit bd82d4bd ("arm64: Fix incorrect irqflag restore for priority
masking") added a macro to the entry.S call paths that leave the
PSTATE.I bit set. This tells the pPNMI masking logic that interrupts
are masked by the CPU, not by the PMR. This value is read back by
local_daif_save().

Commit bd82d4bd added this call to el0_svc, as el0_svc_handler
is called with interrupts masked. el0_svc_compat was missed, but should
be covered in the same way as both of these paths end up in
el0_svc_common(), which expects to unmask interrupts.

Fixes: bd82d4bd ("arm64: Fix incorrect irqflag restore for priority masking")
Signed-off-by: default avatarJames Morse <james.morse@arm.com>
Cc: Julien Thierry <julien.thierry.kdev@gmail.com>
Signed-off-by: default avatarWill Deacon <will@kernel.org>
parent e4365f96
...@@ -775,6 +775,7 @@ el0_sync_compat: ...@@ -775,6 +775,7 @@ el0_sync_compat:
b.ge el0_dbg b.ge el0_dbg
b el0_inv b el0_inv
el0_svc_compat: el0_svc_compat:
gic_prio_kentry_setup tmp=x1
mov x0, sp mov x0, sp
bl el0_svc_compat_handler bl el0_svc_compat_handler
b ret_to_user b ret_to_user
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment