---
id: CVE-2026-89864
title: "In the Linux kernel, the following vulnerability has been resolved:\n\nscsi: qla2xxx: Bound i2c->length in I2C bsg handlers\n\nstruct qla_i2c_access carries a 16-bit length field alongside a fixed\n64-byte buffer:\n\n\tstruct qla_i2c_access {\n\t\t…"
summary: "In the Linux kernel, the following vulnerability has been resolved:\n\nscsi: qla2xxx: Bound i2c->length in I2C bsg handlers\n\nstruct qla_i2c_access carries a 16-bit length field alongside a fixed\n64-byte buffer:\n\n\tstruct qla_i2c_access {\n\t\t…"
severity: none
vendor: Linux
product: Linux
affected:
  - >-
    Linux >= 9ebb5d9c69f1f5721f9f6f49e501c674c1e184ae <
    8f01f886cc5e7bbc16cbf1a9928fdebbc911e973
  - >-
    Linux >= 9ebb5d9c69f1f5721f9f6f49e501c674c1e184ae <
    2be39946abcde5a6416fb074ef728429e246a996
  - >-
    Linux >= 9ebb5d9c69f1f5721f9f6f49e501c674c1e184ae <
    522d6dcdc645d8f97d6b4cdfd6d8eea307f3ff0e
  - >-
    Linux >= 9ebb5d9c69f1f5721f9f6f49e501c674c1e184ae <
    9a756f277eb89f769dbf380f38245c270d31fdb5
  - >-
    Linux >= 9ebb5d9c69f1f5721f9f6f49e501c674c1e184ae <
    32d6df14fdab71fe1ba304fd9a0db0411ea2e043
  - >-
    Linux >= 9ebb5d9c69f1f5721f9f6f49e501c674c1e184ae <
    97ca58b0fb026799b99e3d552d5f69cf9a3113ad
  - >-
    Linux >= 9ebb5d9c69f1f5721f9f6f49e501c674c1e184ae <
    47049fdadc0eaa115e813735b827e1379c0d2cf8
  - >-
    Linux >= 9ebb5d9c69f1f5721f9f6f49e501c674c1e184ae <
    0918ee2c0eeb4d7f45b82b3dc11e65c2d9b7ad59
  - Linux 3.7
published: '2026-09-16'
updated: '2026-09-16'
sourceUpdated: '2026-09-16T11:16:54.480'
source: NVD
sourceUrl: 'https://nvd.nist.gov/vuln/detail/CVE-2026-89864'
references:
  - url: 'https://git.kernel.org/stable/c/0918ee2c0eeb4d7f45b82b3dc11e65c2d9b7ad59'
    label: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
  - url: 'https://git.kernel.org/stable/c/2be39946abcde5a6416fb074ef728429e246a996'
    label: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
  - url: 'https://git.kernel.org/stable/c/32d6df14fdab71fe1ba304fd9a0db0411ea2e043'
    label: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
  - url: 'https://git.kernel.org/stable/c/47049fdadc0eaa115e813735b827e1379c0d2cf8'
    label: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
  - url: 'https://git.kernel.org/stable/c/522d6dcdc645d8f97d6b4cdfd6d8eea307f3ff0e'
    label: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
  - url: 'https://git.kernel.org/stable/c/8f01f886cc5e7bbc16cbf1a9928fdebbc911e973'
    label: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
  - url: 'https://git.kernel.org/stable/c/97ca58b0fb026799b99e3d552d5f69cf9a3113ad'
    label: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
  - url: 'https://git.kernel.org/stable/c/9a756f277eb89f769dbf380f38245c270d31fdb5'
    label: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
tags:
  - nvd
  - cve.org
ingestedAt: '2026-09-16T10:53:53.990Z'
epss: 0.0021
epssPercentile: 0.10003
---

## Overview

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

scsi: qla2xxx: Bound i2c->length in I2C bsg handlers

struct qla_i2c_access carries a 16-bit length field alongside a fixed
64-byte buffer:

	struct qla_i2c_access {
		uint16_t device, offset, option, length;
		uint8_t  buffer[0x40];
	} __packed;

qla2x00_write_i2c() and qla2x00_read_i2c() use the user-supplied
i2c->length without any bounds check. i2c is overlaid on a 256-byte
on-stack buffer and sfp is a 256-byte DMA-pool buffer, so a length up to
65535 overruns both:

  - write: memcpy(sfp, i2c->buffer, i2c->length) over-reads the stack and
    over-writes the sfp heap buffer, and qla2x00_write_sfp() then DMAs
    i2c->length bytes out of the 256-byte buffer.
  - read: qla2x00_read_sfp() DMAs i2c->length bytes into the 256-byte sfp,
    then memcpy(i2c->buffer, sfp, i2c->length) overflows the 64-byte
    buffer inside the on-stack array.

A caller holding CAP_SYS_RAWIO can use this to corrupt the heap and the
kernel stack. Reject requests whose length exceeds the buffer before any
copy or DMA transfer in both handlers.

## Remediation

Refer to the linked advisories for vendor-supplied fixes and affected version ranges.
