From 03135f9dff6db7d454597ad2d4a6948feae110f9 Mon Sep 17 00:00:00 2001 From: LiQian Date: Tue, 27 May 2025 15:45:34 +0800 Subject: [PATCH] arm64:KVM: uncheck writeable_mask in arm64_check_features phytium inclusion category: feature bugzilla: https://gitee.com/openeuler/kernel/issues/ICAWPR CVE: NA ---------------------------------------------------------- Userspace is allowed to modify kvm sys_reg during VM live migration. Signed-off-by: Peng Mengguang Signed-off-by: Li Qian --- arch/arm64/kvm/sys_regs.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/arch/arm64/kvm/sys_regs.c b/arch/arm64/kvm/sys_regs.c index 6a3dddaddd94..31573cc565b5 100644 --- a/arch/arm64/kvm/sys_regs.c +++ b/arch/arm64/kvm/sys_regs.c @@ -1292,6 +1292,7 @@ static int arm64_check_features(struct kvm_vcpu *vcpu, u64 writable_mask = rd->val; u64 limit = rd->reset(vcpu, rd); u64 mask = 0; + u32 midr = read_cpuid_id(); /* * Hidden and unallocated ID registers may not have a corresponding @@ -1312,8 +1313,10 @@ static int arm64_check_features(struct kvm_vcpu *vcpu, u64 ftr_mask; ftr_mask = arm64_ftr_mask(ftrp); - if ((ftr_mask & writable_mask) != ftr_mask) - continue; + if (MIDR_IMPLEMENTOR(midr) != ARM_CPU_IMP_PHYTIUM) { + if ((ftr_mask & writable_mask) != ftr_mask) + continue; + } f_val = arm64_ftr_value(ftrp, val); f_lim = arm64_ftr_value(ftrp, limit); -- Gitee