UBUNTU-CVE-2026-89908: High severity ubuntu/linux-hwe-edge vulnerability
In the Linux kernel, the following vulnerability has been resolved: LoongArch: KVM: Preserve memslot arch flags on KVMMRFLAGSONLY kvmarchpreparememoryregion() computes new->arch.flags, i.e. whether a memslot is KVMMEMHUGEPAGECAPABLE or KVMMEMHUGEPAGEINCAPABLE, only for KVMMRCREATE and KVMMRMOVE, and returns early for every other change. But the generic code allocates a zeroed memslot for every change and never copies old->arch, so after a KVMMRFLAGSONLY update, e.g. toggling KVMMEMLOGDIRTYPAGES for live migration, the active memslot has arch.flags == 0. With both flags clear, faultsupportshugemapping() falls through to the alignment check on the HVA range alone, which no longer verifies that the GPA and HVA have the same offset within a PMD. A memslot that was marked KVMMEMHUGEPAGEINCAPABLE because of a GPA/HVA offset mismatch can then be mapped with PMD entries on read faults, and since kvmmappage() aligns the gfn and the pfn independently, the guest ends up accessing the wrong host pages, exactly the "d -> f, e -> g" case described in the comment above the check. Carry the arch flags over from the old memslot for KVMMRFLAGSONLY, as the GPA, HVA and size are guaranteed to be unchanged for that case.
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Compensating control
In KVM, carry the arch flags from the old memslot to the new memslot for KVM_MR_FLAGS_ONLY updates, since GPA, HVA, and size are unchanged for that operation.