cveboard RSS feed

CVE-2025-38687

CVE.org · Published

Historical CVEsJSONAI instructions

Record status
Published
Identifier year (not publication year)
2025
Source publication
Source updated
Imported by cveboard
Source snapshot
cve_2026-10-24_midnight_baseline ·

Plain text

CNA source text (English)

comedi: fix race between polling and detaching

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.

Scoped product and version facts

Fix information unknown; no fixed version is derived here. Missing information does not prove that no fix exists.

Exploitation unknown; this catalogue does not assess exploitation.

Linux

Vendor
Linux
Product
Linux
Platforms
Unknown
Default status
unaffected
Linux · Scoped product and version facts
Version (version)Status (status)Version scheme (versionType)Exclusive end (lessThan)Inclusive end (lessThanOrEqual)Status changes (at → status)
2f3fdcd7ce935f6f2899ceab57dc8fe5286db3e1affectedgitfe67122ba781df44a1a9716eb1dfd751321ab512UnavailableNone listed
2f3fdcd7ce935f6f2899ceab57dc8fe5286db3e1affectedgitcd4286123d6948ff638ea9cd5818ae4796d5d252UnavailableNone listed
2f3fdcd7ce935f6f2899ceab57dc8fe5286db3e1affectedgitd85fac8729c9acfd72368faff1d576ec585e5c8fUnavailableNone listed
2f3fdcd7ce935f6f2899ceab57dc8fe5286db3e1affectedgit0f989f9d05492028afd2bded4b42023c57d8a76eUnavailableNone listed
2f3fdcd7ce935f6f2899ceab57dc8fe5286db3e1affectedgit5c4a2ffcbd052c69bbf4680677d4c4eaa5a252d4UnavailableNone listed
2f3fdcd7ce935f6f2899ceab57dc8fe5286db3e1affectedgit017198079551a2a5cf61eae966af3c4b145e1f3bUnavailableNone listed
2f3fdcd7ce935f6f2899ceab57dc8fe5286db3e1affectedgit71ca60d2e631cf9c63bcbc7017961c61ff04e419UnavailableNone listed
2f3fdcd7ce935f6f2899ceab57dc8fe5286db3e1affectedgit5724e82df4f9a4be62908362c97d522d25de75ddUnavailableNone listed
2f3fdcd7ce935f6f2899ceab57dc8fe5286db3e1affectedgit35b6fc51c666fc96355be5cd633ed0fe4ccf68b2UnavailableNone listed

Linux

Vendor
Linux
Product
Linux
Platforms
Unknown
Default status
affected
Linux · Scoped product and version facts
Version (version)Status (status)Version scheme (versionType)Exclusive end (lessThan)Inclusive end (lessThanOrEqual)Status changes (at → status)
3.14affectedUnavailableUnavailableUnavailableNone listed
0unaffectedsemver3.14UnavailableNone listed
5.4.297unaffectedsemverUnavailable5.4.*None listed
5.10.241unaffectedsemverUnavailable5.10.*None listed
5.15.190unaffectedsemverUnavailable5.15.*None listed
6.1.149unaffectedsemverUnavailable6.1.*None listed
6.6.103unaffectedsemverUnavailable6.6.*None listed
6.12.43unaffectedsemverUnavailable6.12.*None listed
6.15.11unaffectedsemverUnavailable6.15.*None listed
6.16.2unaffectedsemverUnavailable6.16.*None listed
6.17unaffectedoriginal_commit_for_fixUnavailable*None listed