Linux: KVM: arm64: Fix AArch32 DBGBXVR<n> handling
What fixes it
- 8530a05b304d312fe7dfbc5df7d3e87cc31b256aLinuxCVE List
- 6b1bca1b1ab77f60a62087337bfe6e2f0efb9e6dLinuxCVE List
A fixed version on one release line is not the upgrade target for every line. Check your exact version and any vendor backports.
Description
In the Linux kernel, the following vulnerability has been resolved:
KVM: arm64: Fix AArch32 DBGBXVR<n> handling
The consolidation of the breakpoint and watchpoint register accessors switched DBGBXVR<n> from trap_bvr() to trap_dbg_wb_reg(). The latter selects backing storage with demux_wb_reg(), which only handles Op2 values 4 through 7. Since DBGBXVR<n> uses Op2 1, an AArch32 guest access hits KVM_BUG_ON() and marks the VM dead.
DBGBXVR<n> aliases DBGBVR<n>_EL1[63:32], and its AA32(HI) descriptor already selects the upper half. Map Op2 1 to dbg_bvr[] alongside Op2 4, restoring the pre-regression behavior.
Text from CVE List
Affected versions 8
- Linuxaffected: 3ce9f3357e9e099f02feaa002769eb99ef1138cd before 8530a05b304d312fe7dfbc5df7d3e87cc31b256aCVE List
- Linuxaffected: 3ce9f3357e9e099f02feaa002769eb99ef1138cd before af6813d16ace2765011ca1c567be86ade1d1ee8eCVE List
- Linuxaffected: 3ce9f3357e9e099f02feaa002769eb99ef1138cd before 6b1bca1b1ab77f60a62087337bfe6e2f0efb9e6dCVE List
- Linuxaffected: 6.14CVE List
- Linuxunaffected: all versions before 6.14CVE List
- Linuxunaffected: 6.18.55 through 6.18.*CVE List
- Linuxunaffected: 7.2.9 through 7.2.*CVE List
- Linuxunaffected: 7.3CVE List