CVE-2025-38480

comedi: Fix use of uninitialized data in insn_rw_emulate_bits()

MEDIUM
5.5
CVSS Score
Published: July 28, 2025 at 11:21 AM UTC
Updated: June 17, 2026 at 09:16 AM UTC
2 products affected across 2 vendorsLinux KernelDebian Linux

Using Linux by Linux?

Get instant alerts when new vulnerabilities affect Linux - before attackers find them.

Real-time alertsTrack your software stackFree plan available
Severity
MEDIUM5.5
Exploit prediction
EPSS 0.2%

Description

In the Linux kernel, the following vulnerability has been resolved: comedi: Fix use of uninitialized data in insn_rw_emulate_bits() For Comedi `INSN_READ` and `INSN_WRITE` instructions on "digital" subdevices (subdevice types `COMEDI_SUBD_DI`, `COMEDI_SUBD_DO`, and `COMEDI_SUBD_DIO`), it is common for the subdevice driver not to have `insn_read` and `insn_write` handler functions, but to have an `insn_bits` handler function for handling Comedi `INSN_BITS` instructions. In that case, the subdevice's `insn_read` and/or `insn_write` function handler pointers are set to point to the `insn_rw_emulate_bits()` function by `__comedi_device_postconfig()`. For `INSN_WRITE`, `insn_rw_emulate_bits()` currently assumes that the supplied `data[0]` value is a valid copy from user memory. It will at least exist because `do_insnlist_ioctl()` and `do_insn_ioctl()` in "comedi_fops.c" ensure at lease `MIN_SAMPLES` (16) elements are allocated. However, if `insn->n` is 0 (which is allowable for `INSN_READ` and `INSN_WRITE` instructions, then `data[0]` may contain uninitialized data, and certainly contains invalid data, possibly from a different instruction in the array of instructions handled by `do_insnlist_ioctl()`. This will result in an incorrect value being written to the digital output channel (or to the digital input/output channel if configured as an output), and may be reflected in the internal saved state of the channel. Fix it by returning 0 early if `insn->n` is 0, before reaching the code that accesses `data[0]`. Previously, the function always returned 1 on success, but it is supposed to be the number of data samples actually read or written up to `insn->n`, which is 0 in this case.

Affected

Our own answer: ranges merged, affected separated from platform-only, with confidence and review flags.

2.6.29 ≤ v < 5.10.2412.6.29 ≤ v < 5.15.1902.6.29 ≤ v < 5.4.2972.6.29 ≤ v < 6.1.1472.6.29 ≤ v < 6.12.402.6.29 ≤ v < 6.15.82.6.29 ≤ v < 6.162.6.29 ≤ v < 6.6.1005.11 ≤ v < 5.15.1905.16 ≤ v < 6.1.1475.5 ≤ v < 5.10.2416.13 ≤ v < 6.15.86.2 ≤ v < 6.6.1006.7 ≤ v < 6.12.402.6.296.16 rc16.16 rc26.16 rc36.16 rc46.16 rc56.16 rc6ed9eccbe8970f6eedc1b978c157caf1251a896d4
Vendor states this is fixed in 10f9024a8c824a41827fff1fefefb314c98e2c88 (fixed)
Vendor states this is fixed in 16256d7efcf7acc9f39abe21522c4c6b77f67c00 (fixed)
Vendor states this is fixed in 2af1e7d389c2619219171d23f5b96dbcbb7f9656 (fixed)
Vendor states this is fixed in 3050d197d6bc9ef128944a70210f42d2430b3000 (fixed)
Vendor states this is fixed in 3ab55ffaaf75d0c7b68e332c1cdcc1b0e0044870 (fixed)
Vendor states this is fixed in 4c2981bf30401adfcdbfece4ab6f411f7c5875a1 (fixed)
Vendor states this is fixed in c53570e62b5b28bdb56bb563190227f8307817a5 (fixed)
Vendor states this is fixed in e9cb26291d009243a4478a7ffb37b3a9175bfce9 (fixed)
Vendor states this is fixed in 2.6.29 (unaffected)
Vendor states this is fixed in 5.10.241 (unaffected)
Vendor states this is fixed in 5.15.190 (unaffected)
Vendor states this is fixed in 5.4.297 (unaffected)
Vendor states this is fixed in 6.1.147 (unaffected)
Vendor states this is fixed in 6.12.40 (unaffected)
Vendor states this is fixed in 6.15.8 (unaffected)
Vendor states this is fixed in 6.16 (unaffected)
Vendor states this is fixed in 6.6.100 (unaffected)

References (10)

Patch
Source: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
https://git.kernel.org/stable/c/10f9024a8c824a41827fff1fefefb314c98e2c88
Patch
Source: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
https://git.kernel.org/stable/c/16256d7efcf7acc9f39abe21522c4c6b77f67c00
Patch
Source: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
https://git.kernel.org/stable/c/2af1e7d389c2619219171d23f5b96dbcbb7f9656
Patch
Source: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
https://git.kernel.org/stable/c/3050d197d6bc9ef128944a70210f42d2430b3000
Patch
Source: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
https://git.kernel.org/stable/c/3ab55ffaaf75d0c7b68e332c1cdcc1b0e0044870
Patch
Source: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
https://git.kernel.org/stable/c/4c2981bf30401adfcdbfece4ab6f411f7c5875a1
Patch
Source: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
https://git.kernel.org/stable/c/c53570e62b5b28bdb56bb563190227f8307817a5
Patch
Source: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
https://git.kernel.org/stable/c/e9cb26291d009243a4478a7ffb37b3a9175bfce9

CVSS

Attack Vector
LOCAL
Complexity
LOW
Privileges
LOW
User Interaction
NONE
Scope
UNCHANGED
Confidentiality
NONE
Integrity
NONE
Availability
HIGH
Vector?

Quick Info

StatusANALYZED
CWE
CWE-908

Get alerted

Stop reading CVE feeds looking for your own stack

Track the products you run and VulnTracker tells you when a new CVE affects them — with what is known about fixing it, and nothing about the rest.

Free plan, no card