关键漏洞信息 漏洞描述 问题类型: KVM: arm64: Unconditionally save+flush host FPSIMD/SVE/SME state 上游提交: fbc7e61195e23f744814e78524b73b59fa54ab4 主要问题 1. 主机SVE状态意外丢弃: - 由于TIF_SVE和CPACR_ELx.ZEN配置不一致,导致主机SVE状态被意外丢弃。 - 在QEMU中使用memmove()时,已观察到此问题,由Eric Auger报告。 2. ptrace修改后主机SVE状态被丢弃: - ptrace对SVE状态的无意修改导致其在之后被丢弃。 3. 非保护VM运行时主机FPMR值被丢弃: - 当VM使用FPSIMD/SVE且不支持FPMR时,主机FPMR值可能被丢弃,导致内存中留下陈旧值。 解决方案 通过在加载vCPU时主动保存和“刷新”主机的FPSIMD/SVE/SME状态来避免这些问题。 移除fpsimd_kvm_prepare()函数,并将必要的调用放置在kvm_arch_vcpu_load_fp()中。 历史问题 问题可追溯至v5.17版本,例如关于TIF_SVE清晰性的错误假设。 固定提交 Fixes: 93ae6b01bafee8fa ("KVM: arm64: Discard any SVE state when entering KVM guests") Fixes: 8c645e2731041f0f ("arm64/sve: Leave SVE enabled on syscall if we don't context switch") Fixes: ef3be86021c3bfd3 ("KVM: arm64: Add save/restore support for FPMR")