Логотип exploitDog
Консоль
Логотип exploitDog

exploitDog

redhat логотип

CVE-2026-98344

Опубликовано: 06 окт. 2026
Источник: redhat
CVSS3: 5.5
EPSS Низкий

Описание

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.

A flaw was found in the Linux kernel's DMA (Direct Memory Access) engine subsystem. This vulnerability can lead to a Denial of Service (DoS) when a local user triggers concurrent channel acquisition and release operations. Because the dma_chan_put() function unconditionally decrements device reference counts during fast-path operations, the counter can prematurely drop to zero, causing subsequent DMA channel lookups to fail.

Отчет

A Low impact local denial of service flaw was found in the Linux kernel DMA engine subsystem shipped in Red Hat Enterprise Linux, RHIVOS, and the RHEL CoreOS kernels used by Red Hat OpenShift. The dma_chan_get() function only takes a reference on the DMA device on the slow path (when a channel has no existing clients), while dma_chan_put() drops that reference unconditionally. As a result, every fast-path channel get/put pair releases one extra device reference. A local user able to trigger concurrent DMA channel acquisition and release operations can drive the device reference count down to zero while the provider module is still loaded, after which dma_find_channel() can no longer return the affected channel and DMA-dependent functionality becomes unavailable. Confidentiality and integrity are not affected. The CVSS:3.1 base score is 5.5 (AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H, moderate). Red Hat rates the impact of this flaw as Low because exploitation requires local access with low privileges and depends on the specific combination of a non-private DMA provider that has a persistent client holding a channel while another client repeatedly cycles channel acquisition and release. Red Hat Enterprise Linux 7 (kernel and kernel-rt) is not affected because the vulnerable code is not present in that code base; Red Hat Enterprise Linux 6 Extended Lifecycle Support is out of support scope. For the affected products, the fix has been deferred to a future update due to the Low impact rating. The residual risk of deferring the fix is limited to local denial of service affecting DMA-dependent subsystems in configurations that meet the preconditions described above.

Меры по смягчению последствий

Mitigation for this issue is either not available or the currently available options do not meet the Red Hat Product Security criteria comprising ease of use and deployment, applicability to widespread installation base, or stability.

Затронутые пакеты

ПлатформаПакетСостояниеРекомендацияРелиз
Red Hat Enterprise Linux 10kernelFix deferred
Red Hat Enterprise Linux 6kernelOut of support scope
Red Hat Enterprise Linux 7kernelNot affected
Red Hat Enterprise Linux 7kernel-rtNot affected
Red Hat Enterprise Linux 8kernelFix deferred
Red Hat Enterprise Linux 8kernel-rtFix deferred
Red Hat Enterprise Linux 9kernelFix deferred
Red Hat Enterprise Linux 9kernel-rtFix deferred
Red Hat OpenShift Container Platform 4openshift/ose-rhel-coreos-8Fix deferred
Red Hat OpenShift Container Platform 4openshift/ose-rhel-coreos-9Fix deferred

Показывать по

Дополнительная информация

Статус:

Low
Дефект:
CWE-911
https://bugzilla.redhat.com/show_bug.cgi?id=2546503kernel: dmaengine: Fix device kref underflow in dma_chan_put()

EPSS

Процентиль: 7%
0.00177
Низкий

5.5 Medium

CVSS3

Связанные уязвимости

ubuntu
около 1 месяца назад

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.

nvd
около 1 месяца назад

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.

CVSS3: 5.5
msrc
26 дней назад

dmaengine: Fix device kref underflow in dma_chan_put()

debian
около 1 месяца назад

In the Linux kernel, the following vulnerability has been resolved: d ...

github
около 1 месяца назад

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.

EPSS

Процентиль: 7%
0.00177
Низкий

5.5 Medium

CVSS3