Katalog CVE

CVE-2026-89681

Nieznane
Opublikowano: Przetłumaczono: NVD NIST

Streszczenie

W jądrze Linux rdzeń workqueue czyści WORK_STRUCT_PENDING przed wywołaniem callbacku, więc delayed_work_pending() w lm_breaker_timedout() może zwrócić false, gdy worker fence już działa. Pozwala to breakerowi pobrać dodatkową referencję sc_count i zaplanować nowego workera, który łączy się z już działającym. Nadmiarowa referencja nigdy nie jest zwalniana, co powoduje wyciek layout stateid.

Ocena ryzyka

Wyciek layout stateid może prowadzić do wyczerpania zasobów serwera nfsd i ostatecznie do odmowy usługi. Podatność jest wywoływana przez operacje na layoutach NFS.

Rekomendacja

Zaktualizować jądro Linux do wersji zawierającej poprawkę, która zastępuje wyścigowe sprawdzenie delayed_work_pending() flagą ls_fence_inflight ustawianą atomowo pod ls_lock.

Inne podatności w Linux kernel nfsd

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

In the Linux kernel, the following vulnerability has been resolved: nfsd: fix layout fence worker double-reference race The workqueue core clears WORK_STRUCT_PENDING before the callback is invoked, so delayed_work_pending() in lm_breaker_timedout() can return false while the fence worker is already running. This lets the breaker take a duplicate sc_count reference and schedule a new worker that coalesces with the in-progress one. The extra reference is never put, leaking the layout stateid. Replace the racy delayed_work_pending() check with an ls_fence_inflight boolean set atomically with refcount_inc_not_zero() under ls_lock, and cleared under ls_lock before the final nfs4_put_stid() on the dispose path; the retry path intentionally retains it. Remove the self-rearm mod_delayed_work() at the top of the worker.

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