CVE-2025-38687CWE-362

CVE-2025-38687

High · published September 4, 2025

CVSS v3.1
7.3
EPSS
0%
Percentile
2.2
In the wild
Unconfirmed
What it is

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

comedi: fix race between polling and detaching

syzbot reports a use-after-free in comedi in the below link, which is

due to comedi gladly removing the allocated async area even though poll

requests are still active on the wait_queue_head inside of it. This can

cause a use-after-free when the poll entries are later triggered or

removed, as the memory for the wait_queue_head has been freed. We need

to check there are no tasks queued on any of the subdevices' wait queues

before allowing the device to be detached by the `COMEDI_DEVCONFIG`

ioctl.

Tasks will read-lock `dev->attach_lock` before adding themselves to the

subdevice wait queue, so fix the problem in the `COMEDI_DEVCONFIG` ioctl

handler by write-locking `dev->attach_lock` before checking that all of

the subdevices are safe to be deleted. This includes testing for any

sleepers on the subdevices' wait queues. It remains locked until the

device has been detached. This requires the `comedi_device_detach()`

function to be refactored slightly, moving the bulk of it into new

function `comedi_device_detach_locked()`.

Note that the refactor of `comedi_device_detach()` results in

`comedi_device_cancel_all()` now being called while `dev->attach_lock`

is write-locked, which wasn't the case previously, but that does not

matter.

Thanks to Jens Axboe for diagnosing the problem and co-developing this

patch.

The record
Technical detail
CVSS v3.1
7.3 · HIGH
Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:R/S:U/C:H/I:H/A:H
CVSS v4.0
Not supplied
EPSS
0.00128 · 2.2th percentile
Weakness
CWE-362 · Concurrent Execution using Shared Resource with Improper Synchronization ('Race Condition')
Published
2025-09-04T20:15Z
Affected products (9)
ProductVersionsFixed in
linux/linux_kernel≥ 3.14, < 5.4.2975.4.297
linux/linux_kernel≥ 5.5, < 5.10.2415.10.241
linux/linux_kernel≥ 5.11, < 5.15.1905.15.190
linux/linux_kernel≥ 5.16, < 6.1.1496.1.149
linux/linux_kernel≥ 6.2, < 6.6.1036.6.103
linux/linux_kernel≥ 6.7, < 6.12.436.12.43
linux/linux_kernel≥ 6.13, < 6.15.116.15.11
linux/linux_kernel≥ 6.16, < 6.16.26.16.2
debian/debian_linuxall versions—
References (12)
EPSS history
Timeline
  • 04 SEP 15:32Z
    comedi: fix race between polling and detaching
    cvelistv5