CVE-2025-38687
Severity CVSS v4.0:
Pending analysis
Type:
CWE-362
Concurrent Execution using Shared Resource with Improper Synchronization ('Race Condition')
Publication date:
04/09/2025
Last modified:
09/01/2026
Description
In the Linux kernel, the following vulnerability has been resolved:<br />
<br />
comedi: fix race between polling and detaching<br />
<br />
syzbot reports a use-after-free in comedi in the below link, which is<br />
due to comedi gladly removing the allocated async area even though poll<br />
requests are still active on the wait_queue_head inside of it. This can<br />
cause a use-after-free when the poll entries are later triggered or<br />
removed, as the memory for the wait_queue_head has been freed. We need<br />
to check there are no tasks queued on any of the subdevices&#39; wait queues<br />
before allowing the device to be detached by the `COMEDI_DEVCONFIG`<br />
ioctl.<br />
<br />
Tasks will read-lock `dev->attach_lock` before adding themselves to the<br />
subdevice wait queue, so fix the problem in the `COMEDI_DEVCONFIG` ioctl<br />
handler by write-locking `dev->attach_lock` before checking that all of<br />
the subdevices are safe to be deleted. This includes testing for any<br />
sleepers on the subdevices&#39; wait queues. It remains locked until the<br />
device has been detached. This requires the `comedi_device_detach()`<br />
function to be refactored slightly, moving the bulk of it into new<br />
function `comedi_device_detach_locked()`.<br />
<br />
Note that the refactor of `comedi_device_detach()` results in<br />
`comedi_device_cancel_all()` now being called while `dev->attach_lock`<br />
is write-locked, which wasn&#39;t the case previously, but that does not<br />
matter.<br />
<br />
Thanks to Jens Axboe for diagnosing the problem and co-developing this<br />
patch.
Impact
Base Score 3.x
4.70
Severity 3.x
MEDIUM
Vulnerable products and versions
| CPE | From | Up to |
|---|---|---|
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 3.14 (including) | 5.4.297 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.5 (including) | 5.10.241 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.11 (including) | 5.15.190 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.16 (including) | 6.1.149 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.2 (including) | 6.6.103 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.7 (including) | 6.12.43 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.13 (including) | 6.15.11 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.16 (including) | 6.16.2 (excluding) |
| cpe:2.3:o:debian:debian_linux:11.0:*:*:*:*:*:*:* |
To consult the complete list of CPE names with products and versions, see this page
References to Advisories, Solutions, and Tools
- https://git.kernel.org/stable/c/017198079551a2a5cf61eae966af3c4b145e1f3b
- https://git.kernel.org/stable/c/0f989f9d05492028afd2bded4b42023c57d8a76e
- https://git.kernel.org/stable/c/35b6fc51c666fc96355be5cd633ed0fe4ccf68b2
- https://git.kernel.org/stable/c/5724e82df4f9a4be62908362c97d522d25de75dd
- https://git.kernel.org/stable/c/5c4a2ffcbd052c69bbf4680677d4c4eaa5a252d4
- https://git.kernel.org/stable/c/71ca60d2e631cf9c63bcbc7017961c61ff04e419
- https://git.kernel.org/stable/c/cd4286123d6948ff638ea9cd5818ae4796d5d252
- https://git.kernel.org/stable/c/d85fac8729c9acfd72368faff1d576ec585e5c8f
- https://git.kernel.org/stable/c/fe67122ba781df44a1a9716eb1dfd751321ab512
- https://lists.debian.org/debian-lts-announce/2025/10/msg00007.html
- https://lists.debian.org/debian-lts-announce/2025/10/msg00008.html



