CVE-2026-63934

iio: gyro: itg3200: fix i2c read into the wrong stack location

HIGH
7.1
CVSS Score
Published: July 19, 2026 at 02:55 PM UTC
Updated: October 30, 2026 at 02:28 PM UTC
1 product affected across 1 vendorLinux Kernel

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
HIGH7.1
Exploit prediction
EPSS 0.2%

Description

In the Linux kernel, the following vulnerability has been resolved: iio: gyro: itg3200: fix i2c read into the wrong stack location itg3200_read_all_channels() takes `__be16 *buf' as a parameter and fills the i2c_msg destination as `(char *)&buf'. Since `buf' is the parameter (a pointer), `&buf' is the address of the local pointer slot on the stack of itg3200_read_all_channels(), not the address of the caller's scan buffer. The (char *) cast hides the type mismatch. i2c_transfer() therefore writes ITG3200_SCAN_ELEMENTS * sizeof(s16) = 8 bytes into the parameter's stack slot, which is discarded when the function returns. The caller's scan buffer in itg3200_trigger_handler() is never written to, so iio_push_to_buffers_with_timestamp() pushes uninitialised stack contents to userspace via /dev/iio:deviceX every scan -- both a functional bug (no actual gyroscope or temperature data is delivered through the triggered buffer) and an information leak. The non-buffered read_raw() path is unaffected: it goes through itg3200_read_reg_s16() which uses `&out' on a local s16 value, where that is correct. Drop the spurious `&' so the i2c read writes into the caller's buffer.

Affected

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

3.9 ≤ v < 5.10.2595.11 ≤ v < 5.15.2105.16 ≤ v < 6.1.1766.13 ≤ v < 6.18.356.19 ≤ v < 7.0.126.2 ≤ v < 6.6.1436.7 ≤ v < 6.12.933.97.19dbf091da080508e9f632d307f357beb79a0766b
Vendor states this is fixed in 15a0b3f33ffb6c78b3de6f69b026ceb09b973dd1 (fixed)
Vendor states this is fixed in 31bbd4b87dd6701fa10e03ba7f6268e49e178d16 (fixed)
Vendor states this is fixed in 63203bd072b613c18c237b906b1c9d2dc4527337 (fixed)
Vendor states this is fixed in 6bdc3023d62ed5c7d591f0eb27a5adb37fb892ae (fixed)
Vendor states this is fixed in 8654b5e2617819ff4f7c78071dfd0275e971a9b6 (fixed)
Vendor states this is fixed in 90e809376b0f0d1ddec2eec954aecdd2a5b40b0e (fixed)
Vendor states this is fixed in b64dd5f3b38911054cbcc570df617e3e8e75e562 (fixed)
Vendor states this is fixed in cfc3283859cfdeacadf80d5e6880bdf871ffeaa6 (fixed)
Vendor states this is fixed in 3.9 (unaffected)
Vendor states this is fixed in 5.10.259 (unaffected)
Vendor states this is fixed in 5.15.210 (unaffected)
Vendor states this is fixed in 6.1.176 (unaffected)
Vendor states this is fixed in 6.12.93 (unaffected)
Vendor states this is fixed in 6.18.35 (unaffected)
Vendor states this is fixed in 6.6.143 (unaffected)
Vendor states this is fixed in 7.0.12 (unaffected)
Vendor states this is fixed in 7.1 (unaffected)

CVSS

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

Quick Info

StatusANALYZED
CWE
CWE-125

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