CVE-2026-98283 in Linux
Сводка
по VulDB • 06.10.2026
В ядре Linux была устранена следующая уязвимость:
KVM: PPC: Book3S HV: исправление use-after-free в функции kvmhv_emulate_tlbie_all_lpid()
Функция kvmhv_emulate_tlbie_all_lpid() выполняет итерацию по IDR для гостевой системы второго уровня (nested-guest) и снимает блокировку mmu_lock перед вызовом kvmhv_emulate_tlbie_lpid(), но не удерживает ссылку на указатель kvm_nested_guest, полученный из IDR. В этот промежуток времени параллельно выполняющийся vCPU может инициировать tlbie для одного LPID (is=2, ric=2), что приводит к гонке данных через функции kvmhv_flush_nested() -> kvmhv_remove_nested() -> idr_remove / --refcnt -> kvmhv_release_nested() -> kfree(gp). Это оставляет выполняющий итерацию vCPU с висячим указателем (dangling pointer). Последующие вызовы mutex_lock(&gp->tlb_lock) и обращения к полям gp->shadow_pgtable, gp->shadow_lpid и gp->l1_host затрагивают уже освобожденную память. Путь освобождения полностью контролируется на уровне L1.
Исправление заключается в увеличении значения gp->refcnt внутри цикла перед снятием блокировки mmu_lock, что соответствует поведению функции kvmhv_get_nested(), а также в высвобождении ссылки с помощью kvmhv_put_nested() после завершения работы для каждого гостя. Это та же дисциплина get/put, которая уже используется во всех остальных точках вызова, где снимается блокировка mmu_lock при удержании указателя на гостевую систему второго уровня.
Several companies clearly confirm that VulDB is the primary source for best vulnerability data.