Skip to content
Heist/ feed
Back to feed
HighFix available

i2c: smbus: reject oversized block transfers in the common path

Type: advisorySources: OSV

In the Linux kernel, the following vulnerability has been resolved: i2c: smbus: reject oversized block transfers in the common path The SMBus block transfer length data->block[0] is validated in i2c_smbus_xfer_emulated() but that check runs too late for tracepoints and is skipped entirely when the adapter provides a native smbus_xfer implementation. This allows user-controlled oversized block lengths to reach tracepoint memcpy calls and driver callbacks unchecked. Add an early validation in __i2c_smbus_xfer() that rejects block transfers whose caller-supplied length is zero or exceeds I2C_SMBUS_BLOCK_MAX before any tracepoint fires or driver callback runs. data->block[0] is filled in by the device on SMBus block reads, so the check is scoped to operations where the length is actually supplied by the caller. This is consistent with the existing -EINVAL convention in the emulated path and protects all downstream consumers at once: the smbus_write tracepoint, all native smbus_xfer driver implementations, and the emulated path. Two distinct bugs are fixed by this change: Bug 1: smbus_write tracepoint OOB (include/trace/events/smbus.h) trace_smbus_write() fires before any validation and copies data->block[0]+1 bytes into a 34-byte event buffer. With block[0]=0xfe the tracepoint copies 255 bytes, overflowing by 221. BUG: KASAN: stack-out-of-bounds in trace_event_raw_event_smbus_write+0x27c/0x530 Read of size 255 at addr ffff88800d98fcf8 by task poc_smbus/91 Call Trace: __asan_memcp

Products
Kernel
Affected versions
Not specified
Fixed versions
5.10.271, 5.15.222, 6.1.189, 6.12.111, 6.18.53, 6.6.158
CVEs
CVE-2026-93287
Confirmed fixed CVEs
Not specified
Updated in this feed
7 Nov 2026, 10:31 UTC · Revision 1

Source evidence

i2c: smbus: reject oversized block transfers in the common path

core-osv · Original source

Published 24 Sept 2026, 16:02 UTC

In the Linux kernel, the following vulnerability has been resolved: i2c: smbus: reject oversized block transfers in the common path The SMBus block transfer length data->block[0] is validated in i2c_smbus_xfer_emulated() but that check runs too late for tracepoints and is skipped entirely when the adapter provides a native smbus_xfer implementation. This allows user-controlled oversized block lengths to reach tracepoint memcpy calls and driver callbacks unchecked. Add an early validation in __i2c_smbus_xfer() that rejects block transfers whose caller-supplied length is zero or exceeds I2C_SMBUS_BLOCK_MAX before any tracepoint fires or driver callback runs. data->block[0] is filled in by the device on SMBus block reads, so the check is scoped to operations where the length is actually supplied by the caller. This is consistent with the existing -EINVAL convention in the emulated path and protects all downstream consumers at once: the smbus_write tracepoint, all native smbus_xfer driver implementations, and the emulated path. Two distinct bugs are fixed by this change: Bug 1: smbus_write tracepoint OOB (include/trace/events/smbus.h) trace_smbus_write() fires before any validation and copies data->block[0]+1 bytes into a 34-byte event buffer. With block[0]=0xfe the tracepoint copies 255 bytes, overflowing by 221. BUG: KASAN: stack-out-of-bounds in trace_event_raw_event_smbus_write+0x27c/0x530 Read of size 255 at addr ffff88800d98fcf8 by task poc_smbus/91 Call Trace: __asan_memcp

osv:CVE-2026-93287

Kernel

Fixed versions: 5.10.271, 5.15.222, 6.1.189, 6.6.158, 6.12.111, 6.18.53

Complete source record
{
  "id": "5c40ecbc1700261d8d51d3104b851afd0610ab72786d83a50aea187e6a354472",
  "url": "https://osv.dev/vulnerability/CVE-2026-93287",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "i2c: smbus: reject oversized block transfers in the common path",
    "summary": "In the Linux kernel, the following vulnerability has been resolved: i2c: smbus: reject oversized block transfers in the common path The SMBus block transfer length data->block[0] is validated in i2c_smbus_xfer_emulated() but that check runs too late for tracepoints and is skipped entirely when the adapter provides a native smbus_xfer implementation. This allows user-controlled oversized block lengths to reach tracepoint memcpy calls and driver callbacks unchecked. Add an early validation in __i2c_smbus_xfer() that rejects block transfers whose caller-supplied length is zero or exceeds I2C_SMBUS_BLOCK_MAX before any tracepoint fires or driver callback runs. data->block[0] is filled in by the device on SMBus block reads, so the check is scoped to operations where the length is actually supplied by the caller. This is consistent with the existing -EINVAL convention in the emulated path and protects all downstream consumers at once: the smbus_write tracepoint, all native smbus_xfer driver implementations, and the emulated path. Two distinct bugs are fixed by this change: Bug 1: smbus_write tracepoint OOB (include/trace/events/smbus.h) trace_smbus_write() fires before any validation and copies data->block[0]+1 bytes into a 34-byte event buffer. With block[0]=0xfe the tracepoint copies 255 bytes, overflowing by 221. BUG: KASAN: stack-out-of-bounds in trace_event_raw_event_smbus_write+0x27c/0x530 Read of size 255 at addr ffff88800d98fcf8 by task poc_smbus/91 Call Trace: __asan_memcp",
    "evidence": "osv:CVE-2026-93287",
    "products": [
      {
        "name": {
          "value": "Kernel",
          "evidence": "/affected/1/package/name"
        },
        "prerequisites": [],
        "fixed_versions": [
          {
            "value": "5.10.271",
            "evidence": "/affected/1/ranges"
          },
          {
            "value": "5.15.222",
            "evidence": "/affected/1/ranges"
          },
          {
            "value": "6.1.189",
            "evidence": "/affected/1/ranges"
          },
          {
            "value": "6.6.158",
            "evidence": "/affected/1/ranges"
          },
          {
            "value": "6.12.111",
            "evidence": "/affected/1/ranges"
          },
          {
            "value": "6.18.53",
            "evidence": "/affected/1/ranges"
          }
        ],
        "affected_versions": []
      }
    ],
    "severity": "high",
    "structured": {
      "id": "CVE-2026-93287",
      "aliases": [
        "CVE-2026-93287"
      ],
      "metrics": [
        {
          "type": "CVSS_V3",
          "score": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
              "type": "GIT",
              "events": [
                {
                  "introduced": "4710317891e4824ce1510a6b5066abbd3e917750"
                },
                {
                  "fixed": "856dffcc097b3d8ed45a643ebda07cb92968cb33"
                },
                {
                  "fixed": "356875e33f2c6d2061a02c9dec1a1e639d265a55"
                },
                {
                  "fixed": "72ca5e0b8b7a62615758f8871c34d61616c2dc8b"
                },
                {
                  "fixed": "df077253f6405d67ad087538e495ef32a05717b7"
                },
                {
                  "fixed": "f09edffba97d37b1fdff5f818a9a45f8a98ac171"
                },
                {
                  "fixed": "c4b478bc50b7ca9865e237909941253a0f7111a2"
                },
                {
                  "fixed": "3051cd060fa496df42954291fa2306ed2eab4ecc"
                }
              ]
            }
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-93287.json"
          }
        },
        {
          "ranges": [
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "2.6.33"
                },
                {
                  "fixed": "5.10.271"
                }
              ]
            },
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "5.11.0"
                },
                {
                  "fixed": "5.15.222"
                }
              ]
            },
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "5.16.0"
                },
                {
                  "fixed": "6.1.189"
                }
              ]
            },
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "6.2.0"
                },
                {
                  "fixed": "6.6.158"
                }
              ]
            },
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "6.7.0"
                },
                {
                  "fixed": "6.12.111"
                }
              ]
            },
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "6.13.0"
                },
                {
                  "fixed": "6.18.53"
                }
              ]
            }
          ],
          "package": {
            "name": "Kernel",
            "ecosystem": "Linux"
          },
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-93287.json"
          }
        }
      ],
      "modified": "2026-10-28T02:30:50.391394054Z",
      "provider": "osv",
      "references": [
        "https://git.kernel.org/stable/c/3051cd060fa496df42954291fa2306ed2eab4ecc",
        "https://git.kernel.org/stable/c/356875e33f2c6d2061a02c9dec1a1e639d265a55",
        "https://git.kernel.org/stable/c/72ca5e0b8b7a62615758f8871c34d61616c2dc8b",
        "https://git.kernel.org/stable/c/856dffcc097b3d8ed45a643ebda07cb92968cb33",
        "https://git.kernel.org/stable/c/c4b478bc50b7ca9865e237909941253a0f7111a2",
        "https://git.kernel.org/stable/c/df077253f6405d67ad087538e495ef32a05717b7",
        "https://git.kernel.org/stable/c/f09edffba97d37b1fdff5f818a9a45f8a98ac171",
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/93xxx/CVE-2026-93287.json",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-93287",
        "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git"
      ],
      "provider_metadata": {
        "cna_assigner": "Linux",
        "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/93xxx/CVE-2026-93287.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-93287",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 519009,
  "published_at": "2026-09-24T16:02:11.296+00:00"
}