Katalog CVE

CVE-2026-98344

Niskie ryzyko· EPSS 8%
Opublikowano: Zaktualizowano: Przetłumaczono: NVD NIST

Prawdopodobieństwo exploitacji (EPSS)

Niskie ryzyko
0.18%

Percentyl 8 - wyżej niż 8% wszystkich znanych CVE

Streszczenie

W jądrze Linux funkcja dma_chan_put() bezwarunkowo zwalniała referencję urządzenia, podczas gdy dma_chan_get() pobierało ją tylko na ścieżce wolnej. Powodowało to niedomiar licznika kref przy każdej parze get/put na ścieżce szybkiej.

Ocena ryzyka

Gdy licznik kref osiągnie zero, dma_find_channel() zwraca NULL mimo załadowanego modułu dostawcy, co może prowadzić do awarii lub niedostępności kanałów DMA.

Rekomendacja

Zaktualizuj jądro Linux do wersji z poprawką, która zwalnia device->ref tylko przy ostatnim put, zgodnie z pojedynczym get na ścieżce wolnej.

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: dmaengine: Fix device kref underflow in dma_chan_put() dma_chan_get() takes chan->device->ref only on the slow path: /* no kref on fast path */ if (chan->client_count) { __module_get(owner); chan->client_count++; return 0; } if (!try_module_get(owner)) return -ENODEV; if (!dma_device_get(chan->device)) { // calls kref_get_unless_zero() dma_chan_put() drops the ref unconditionally, so every fast-path get/put pair drops one extra device reference. The bug fires when two conditions hold together: a non-private provider has a persistent client holding chan->client_count > 0 and another client cycles dmaengine_get()/dmaengine_put(). When the kref hits zero, the subsequent dma_find_channel() returns NULL even though the provider module is still loaded. Fix this by dropping device->ref only on the last put, matching the single slow-path get.

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