CVE-2022-50145CWE-476

CVE-2022-50145

High · published June 18, 2025

CVSS v3.1
7.8
EPSS
0%
Percentile
9.8
In the wild
Unconfirmed
What it is

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

dmaengine: sf-pdma: Add multithread support for a DMA channel

When we get a DMA channel and try to use it in multiple threads it

will cause oops and hanging the system.

% echo 64 > /sys/module/dmatest/parameters/threads_per_chan

% echo 10000 > /sys/module/dmatest/parameters/iterations

% echo 1 > /sys/module/dmatest/parameters/run

[ 89.480664] Unable to handle kernel NULL pointer dereference at virtual

address 00000000000000a0

[ 89.488725] Oops [#1]

[ 89.494708] CPU: 2 PID: 1008 Comm: dma0chan0-copy0 Not tainted

5.17.0-rc5

[ 89.509385] epc : vchan_find_desc+0x32/0x46

[ 89.513553] ra : sf_pdma_tx_status+0xca/0xd6

This happens because of data race. Each thread rewrite channels's

descriptor as soon as device_prep_dma_memcpy() is called. It leads to the

situation when the driver thinks that it uses right descriptor that

actually is freed or substituted for other one.

With current fixes a descriptor changes its value only when it has

been used. A new descriptor is acquired from vc->desc_issued queue that

is already filled with descriptors that are ready to be sent. Threads

have no direct access to DMA channel descriptor. Now it is just possible

to queue a descriptor for further processing.

The record
Technical detail
CVSS v3.1
7.8 · HIGH
Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
CVSS v4.0
Not supplied
EPSS
0.00204 · 9.8th percentile
Weakness
CWE-476 · NULL Pointer Dereference
Published
2025-06-18T15:15Z
Affected products (4)
ProductVersionsFixed in
linux/linux_kernel≥ 5.5, < 5.10.1375.10.137
linux/linux_kernel≥ 5.11, < 5.15.615.15.61
linux/linux_kernel≥ 5.16, < 5.18.185.18.18
linux/linux_kernel≥ 5.19, < 5.19.25.19.2
References (5)
EPSS history
Timeline
  • 18 JUN 11:03Z
    dmaengine: sf-pdma: Add multithread support for a DMA channel
    cvelistv5