KVM: PPC: Book3S HV: fix use-after-free in kvmhv_emulate_tlbie_all_lpid() (Linux Linux)

CVE-2026-98283
HIGH 8.8

At a glance

Source
NVD
EPSS
EPSS 0.13 % · percentile 2 ()
State
PUBLISHED
Published
Updated
Assigner
Linux
NVD status
Received

Description

In the Linux kernel, the following vulnerability has been resolved: KVM: PPC: Book3S HV: fix use-after-free in kvmhv_emulate_tlbie_all_lpid() kvmhv_emulate_tlbie_all_lpid() iterates the nested-guest IDR and drops mmu_lock before calling kvmhv_emulate_tlbie_lpid(), but does not hold a reference on the kvm_nested_guest pointer obtained from the IDR. A concurrent vCPU issuing a single-LPID tlbie (is=2, ric=2) can race through kvmhv_flush_nested() -> kvmhv_remove_nested() -> idr_remove / --refcnt -> kvmhv_release_nested() -> kfree(gp) in that window, leaving the iterating vCPU with a dangling pointer. The subsequent mutex_lock(&gp->tlb_lock) and accesses to gp->shadow_pgtable, gp->shadow_lpid and gp->l1_host all touch freed memory. The free path is fully L1-controlled. Fix this by incrementing gp->refcnt inside the loop before dropping mmu_lock, mirroring what kvmhv_get_nested() does, and releasing the reference with kvmhv_put_nested() after the per-guest work completes. This is the same get/put discipline already used at every other call site that drops mmu_lock while holding a nested-guest pointer.

References

Scores

VersionScoreVectorScored by
CVSS 3.1HIGH 8.8CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:HLinux
CVSS 3.1HIGH 8.8CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:HNVD · 416baaa9-dc9f-4396-8d5f-8c081fb06d67 (Secondary)

European references

CERT-FR advisories

Affected products

ProductVersions
Linux · Linuxaffected e3b6b4661527e821ffbe3db83952fdb1e6e47c49 < 4d8f7b1f586375df8bce23a0909566ad5e852259 ; affected e3b6b4661527e821ffbe3db83952fdb1e6e47c49 < e37fba1ba69385cff2d0e60b371ee19e7d1852d1 ; affected e3b6b4661527e821ffbe3db83952fdb1e6e47c49 < 24b634852413229bb8340d908b115c3365f3a247 ; affected e3b6b4661527e821ffbe3db83952fdb1e6e47c49 < fbf69b7d0555ee83c871f58750770f74b7179ad1 ; affected e3b6b4661527e821ffbe3db83952fdb1e6e47c49 < ec2d7a52b3996ae81131617b4afc0af31583c1b4 ; affected e3b6b4661527e821ffbe3db83952fdb1e6e47c49 < 51938dfa8a51a4f85328413fca9b6e21f9d2d088
Linux · Linuxaffected 4.20 ; unaffected 0 < 4.20 ; unaffected 6.1.189 ≤ 6.1.* ; unaffected 6.6.158 ≤ 6.6.* ; unaffected 6.12.112 ≤ 6.12.* ; unaffected 6.18.54 ≤ 6.18.*

Sources

SourceLicence
CVE List (CVEProject cvelistV5)CVE Program Terms of Use
EPSS (FIRST.org)FIRST — attribution requested
ENISA EUVDENISA — reproduction authorised, source acknowledged
CERT-FR (ANSSI)Licence Ouverte / Etalab 2.0
NVD (NIST) via fkie-cad/nvd-json-data-feedsPublic domain — this product uses data from the NVD API but is not endorsed or certified by the NVD