UPSTREAM: KVM: arm64: Fix AArch32 register narrowing on userspace write
When userspace writes to one of the core registers, we make sure to narrow the corresponding GPRs if PSTATE indicates an AArch32 context. The code tries to check whether the context is EL0 or EL1 so that it narrows the correct registers. But it does so by checking the full PSTATE instead of PSTATE.M. As a consequence, and if we are restoring an AArch32 EL0 context in a 64bit guest, and that PSTATE has *any* bit set outside of PSTATE.M, we narrow *all* registers instead of only the first 15, destroying the 64bit state. Obviously, this is not something the guest is likely to enjoy. Correctly masking PSTATE to only evaluate PSTATE.M fixes it. Bug: 254441685 Fixes: 90c1f934 ("KVM: arm64: Get rid of the AArch32 register mapping code") Reported-by:Nina Schoetterl-Glausch <nsg@linux.ibm.com> Cc: stable@vger.kernel.org Reviewed-by:
Nina Schoetterl-Glausch <nsg@linux.ibm.com> Acked-by:
Oliver Upton <oliver.upton@linux.dev> Link: https://lore.kernel.org/r/20240524141956.1450304-2-maz@kernel.org Signed-off-by:
Marc Zyngier <maz@kernel.org> (cherry picked from commit 947051e3) Signed-off-by:
Lee Jones <joneslee@google.com> Change-Id: Ia067293b9d6b05ea6e3f9605d12cd6e4fe7f450f
Loading
Please sign in to comment