FAILED: patch "[PATCH] arm64: KVM: Sanitize PSTATE.M when being set from userspace" failed to apply to 4.14-stable tree
Subsystems (3)
[email protected]
maintainerThe patch below does not apply to the 4.14-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
Quoted 1 line
From
2a3f93459d689d990b3ecfbe782fec89b97d3279Mon Sep 17 00:00:00 2001
From: Marc Zyngier <[email protected]>
Date: Thu, 27 Sep 2018 16:53:22 +0100
Subject: [PATCH] arm64: KVM: Sanitize PSTATE.M when being set from userspace
Not all execution modes are valid for a guest, and some of them depend on what the HW actually supports. Let's verify that what userspace provides is compatible with both the VM settings and the HW capabilities.
Cc <[email protected]>
Fixes 0d854a60b1d7 ("arm64: KVM: enable initialization of a 32bit vcpu")
Reviewed-by Christoffer Dall <[email protected]>
Reviewed-by Mark Rutland <[email protected]>
Reviewed-by Dave Martin <[email protected]>
Signed-off-by Marc Zyngier <[email protected]>
Signed-off-by Will Deacon <[email protected]>
arch/arm64/kvm/guest.c +9 -1
@@ -152,17 +152,25 @@ static int set_core_reg(struct kvm_vcpu *vcpu, const struct kvm_one_reg *reg) }if (off ==KVM_REG_ARM_CORE_REG (regs.pstate)) { -u32 mode = (*(u32 *)valp) &PSR_AA32_MODE_MASK ; +u64 mode = (*(u64 *)valp) &PSR_AA32_MODE_MASK ;switch (mode) {case PSR_AA32_MODE_USR : +if (!system_supports_32bit_el0 ()) +return -EINVAL ; +break ;case PSR_AA32_MODE_FIQ :case PSR_AA32_MODE_IRQ :case PSR_AA32_MODE_SVC :case PSR_AA32_MODE_ABT :case PSR_AA32_MODE_UND : +if (!vcpu_el1_is_32bit (vcpu)) +return -EINVAL ; +break ;case PSR_MODE_EL0t:case PSR_MODE_EL1t:case PSR_MODE_EL1h: +if (vcpu_el1_is_32bit (vcpu)) +return -EINVAL ;break ;default : err = -EINVAL ;