Katalog CVE

CVE-2026-98079

Nieznane
Opublikowano: Przetłumaczono: NVD NIST

Streszczenie

W jądrze Linuxa w kompresji zstd dla btrfs występuje błąd utraty przebudzenia (lost wakeup) w funkcji zstd_get_workspace(). Pisarz może zasnąć na zawsze, nawet gdy workspace jest wolny, z powodu braku ponownego sprawdzenia puli po prepare_to_wait().

Ocena ryzyka

Podatność może prowadzić do zakleszczenia wątków zapisujących, co może skutkować brakiem odpowiedzi systemu lub awarią.

Rekomendacja

Zaleca się aktualizację jądra Linuxa do wersji z poprawką, która po prepare_to_wait() ponownie sprawdza pulę i używa workspace, jeśli się pojawił.

Inne podatności w Linux kernel

Zobacz wszystkie
Oryginalny opis (angielski, źródło NVD)

In the Linux kernel, the following vulnerability has been resolved: btrfs: zstd: fix lost wakeup when waiting for a workspace A writer can sleep forever in zstd_get_workspace() even though a workspace is free. When zstd_alloc_workspace() fails, the task is queued on zwsm->wait and schedules unconditionally, never re-testing the pool. zstd_put_workspace() publishes the workspace and then calls cond_wake_up(), which only wakes when a sleeper is already visible, so a workspace returned between the failed allocation and prepare_to_wait() wakes nobody. The window is wide: zstd_alloc_workspace() goes through kvmalloc() and may enter reclaim. Only a max level workspace triggers the wakeup and one is deliberately kept allocated as the fallback every waiter waits for, so once its wakeup is lost the writer stays in TASK_UNINTERRUPTIBLE until some other task happens to return one. Re-check the pool after prepare_to_wait() has published the waiter, and use the workspace if one turned up.

Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS