CVE-2026-52948: i2c: dev: prevent integer overflow in I2C_TIMEOUT ioctl

Published Jun 24, 2026
·
Updated

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

i2c: dev: prevent integer overflow in I2CTIMEOUT ioctl

While fuzzing with Syzkaller, a persistent scheduletimeout: wrong timeout value warning was observed, accompanied by SMBus controller state machine corruption.

The I2CTIMEOUT ioctl accepts a user-provided timeout in multiples of 10 ms. The user argument is checked against INTMAX, but it is subsequently multiplied by 10 before being passed to msecstojiffies().

A malicious user can pass a large value (e.g., 429496729) that passes the arg > INTMAX check but overflows when multiplied by 10. This results in a truncated 32-bit unsigned value that bypasses the internal (int)m < 0 check in msecstojiffies().

The truncated value is then assigned to client->adapter->timeout (a signed 32-bit int), which is reinterpreted as a negative number. When passed to waitforcompletiontimeout(), this negative value undergoes sign extension to a 64-bit unsigned long, triggering the scheduletimeout warning and causing premature returns. This leaves the SMBus state machine in an unrecoverable state, constituting a local Denial of Service (DoS).

Fix this by bounding the user argument to INTMAX / 10.

[wsa: move the comment as well]

Affected Software

14 affected components
Linux i2c-dev (Linux kernel)
Microsoft azl3 kernel 6.6.143.1-1
Linux Linux kernel>=2.6.29.1<5.10.259
Linux Linux kernel>=5.11<5.15.210
Linux Linux kernel>=5.16<6.1.176
Linux Linux kernel>=6.2<6.6.143
Linux Linux kernel>=6.7<6.12.94
Linux Linux kernel>=6.13<6.18.36
Linux Linux kernel>=6.19<7.0.13
Linux Linux kernel=2.6.29
Linux Linux kernel=2.6.29-rc7
Linux Linux kernel=2.6.29-rc8
Linux Linux kernel=7.1-rc1
Linux Linux kernel=7.1-rc2

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Configuration

    In the I2C_TIMEOUT ioctl path, bound the user-provided timeout argument to `INT_MAX / 10` (so the subsequent multiplication by 10 cannot overflow and turn into a negative value when passed to `msecs_to_jiffies()` / `wait_for_completion_timeout()`).

    Linux kernel I2C_TIMEOUT ioctl timeout argument handling (bounding check before multiplying by 10) = Bound user-provided timeout to INT_MAX / 10 before multiplying by 10 (i.e., ensure arg * 10 <= INT_MAX).

Event History

Jun 24, 2026
CVE Published
via MITRE·04:26 PM
Data Sourced
via MITRE·04:26 PM
Description
Data Sourced
via NVD·05:17 PM
RemedyDescriptionSeverityWeaknessAffected Software
Jun 27, 2026
Data Sourced
via Microsoft·08:03 AM
DescriptionSeverityWeaknessAffected Software

Frequently Asked Questions

1

What is the severity of CVE-2026-52948?

The severity of CVE-2026-52948 is rated as 22.

2

How do I fix CVE-2026-52948?

To fix CVE-2026-52948, update your Linux kernel to the latest version that addresses this vulnerability.

3

What systems are affected by CVE-2026-52948?

CVE-2026-52948 affects the Linux i2c-dev subsystem in the Linux kernel.

4

What type of vulnerability is CVE-2026-52948?

CVE-2026-52948 is classified as an integer overflow vulnerability.

5

What consequences can occur from CVE-2026-52948?

CVE-2026-52948 may result in SMBus controller state machine corruption and erroneous timeout behaviors.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203