Skip to content
Heist/ feed
Back to feed
UnratedFix available

i3c: master: svc: bound IBI payload to the requested max_payload_len

Type: advisorySources: OSV

In the Linux kernel, the following vulnerability has been resolved: i3c: master: svc: bound IBI payload to the requested max_payload_len svc_i3c_master_handle_ibi() reads the IBI payload from the RX FIFO into the IBI slot. The loop is bounded by the hardware FIFO size (SVC_I3C_FIFO_SIZE), not by the slot size. slot->data points into the IBI pool, which i3c_generic_ibi_alloc_pool() sizes at max_payload_len per slot. svc_i3c_master_request_ibi() only rejects a max_payload_len larger than SVC_I3C_FIFO_SIZE, so a driver can request a smaller one. mctp-i3c requests 1. Each readsb() then copies the controller RXCOUNT bytes (up to 31) with no check against the slot size. A device that sends more bytes than the slot holds writes past slot->data, an out-of-bounds write into the IBI pool. Bound the loop by dev->ibi->max_payload_len and clamp each read to the space left in the slot, the same way dw-i3c does. A device can still send more than the requested payload. Flush the leftover bytes from the RX FIFO so they do not leak into the next transfer.

Products
Kernel
Affected versions
Not specified
Fixed versions
5.15.221, 6.1.188, 6.12.109, 6.18.50, 6.6.157, 7.2.4
CVEs
CVE-2026-80951
Confirmed fixed CVEs
Not specified
Updated in this feed
2 Nov 2026, 17:32 UTC · Revision 1

Source evidence

i3c: master: svc: bound IBI payload to the requested max_payload_len

core-osv · Original source

Published 11 Sept 2026, 19:42 UTC

In the Linux kernel, the following vulnerability has been resolved: i3c: master: svc: bound IBI payload to the requested max_payload_len svc_i3c_master_handle_ibi() reads the IBI payload from the RX FIFO into the IBI slot. The loop is bounded by the hardware FIFO size (SVC_I3C_FIFO_SIZE), not by the slot size. slot->data points into the IBI pool, which i3c_generic_ibi_alloc_pool() sizes at max_payload_len per slot. svc_i3c_master_request_ibi() only rejects a max_payload_len larger than SVC_I3C_FIFO_SIZE, so a driver can request a smaller one. mctp-i3c requests 1. Each readsb() then copies the controller RXCOUNT bytes (up to 31) with no check against the slot size. A device that sends more bytes than the slot holds writes past slot->data, an out-of-bounds write into the IBI pool. Bound the loop by dev->ibi->max_payload_len and clamp each read to the space left in the slot, the same way dw-i3c does. A device can still send more than the requested payload. Flush the leftover bytes from the RX FIFO so they do not leak into the next transfer.

osv:CVE-2026-80951

Kernel

Fixed versions: 5.15.221, 6.1.188, 6.6.157, 6.12.109, 6.18.50, 7.2.4

Complete source record
{
  "id": "fd9f7ae92ba5ef15e4d45fe57d1a870f71b6109f97ca800a3de55b1d2f785345",
  "url": "https://osv.dev/vulnerability/CVE-2026-80951",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "i3c: master: svc: bound IBI payload to the requested max_payload_len",
    "summary": "In the Linux kernel, the following vulnerability has been resolved: i3c: master: svc: bound IBI payload to the requested max_payload_len svc_i3c_master_handle_ibi() reads the IBI payload from the RX FIFO into the IBI slot. The loop is bounded by the hardware FIFO size (SVC_I3C_FIFO_SIZE), not by the slot size. slot->data points into the IBI pool, which i3c_generic_ibi_alloc_pool() sizes at max_payload_len per slot. svc_i3c_master_request_ibi() only rejects a max_payload_len larger than SVC_I3C_FIFO_SIZE, so a driver can request a smaller one. mctp-i3c requests 1. Each readsb() then copies the controller RXCOUNT bytes (up to 31) with no check against the slot size. A device that sends more bytes than the slot holds writes past slot->data, an out-of-bounds write into the IBI pool. Bound the loop by dev->ibi->max_payload_len and clamp each read to the space left in the slot, the same way dw-i3c does. A device can still send more than the requested payload. Flush the leftover bytes from the RX FIFO so they do not leak into the next transfer.",
    "evidence": "osv:CVE-2026-80951",
    "products": [
      {
        "name": {
          "value": "Kernel",
          "evidence": "/affected/1/package/name"
        },
        "prerequisites": [],
        "fixed_versions": [
          {
            "value": "5.15.221",
            "evidence": "/affected/1/ranges"
          },
          {
            "value": "6.1.188",
            "evidence": "/affected/1/ranges"
          },
          {
            "value": "6.6.157",
            "evidence": "/affected/1/ranges"
          },
          {
            "value": "6.12.109",
            "evidence": "/affected/1/ranges"
          },
          {
            "value": "6.18.50",
            "evidence": "/affected/1/ranges"
          },
          {
            "value": "7.2.4",
            "evidence": "/affected/1/ranges"
          }
        ],
        "affected_versions": []
      }
    ],
    "severity": "unknown",
    "structured": {
      "id": "CVE-2026-80951",
      "aliases": [
        "CVE-2026-80951"
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
              "type": "GIT",
              "events": [
                {
                  "introduced": "dd3c52846d5954acd43f0e771689302f27dadc28"
                },
                {
                  "fixed": "7c099b0b292a68d0ef558527945dbfb756fbf893"
                },
                {
                  "fixed": "7cc5ba756bc1cfffab9cb2695742f9f479dc73f7"
                },
                {
                  "fixed": "35aa6730b8c5626b879a4e893fe664f59bf07d7f"
                },
                {
                  "fixed": "f296a0d5907bf88314dfda67245f7f69d1552470"
                },
                {
                  "fixed": "5697d779577e2786ff3348ae9b77020ac0cf0aab"
                },
                {
                  "fixed": "aac3c5aababc7fb69d5bf5b0cc52d308574e3a8c"
                },
                {
                  "fixed": "e2bda39d7f9f285ec803e200b5c1f17143d0b483"
                }
              ]
            }
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-80951.json"
          }
        },
        {
          "ranges": [
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "5.12.0"
                },
                {
                  "fixed": "5.15.221"
                }
              ]
            },
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "5.16.0"
                },
                {
                  "fixed": "6.1.188"
                }
              ]
            },
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "6.2.0"
                },
                {
                  "fixed": "6.6.157"
                }
              ]
            },
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "6.7.0"
                },
                {
                  "fixed": "6.12.109"
                }
              ]
            },
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "6.13.0"
                },
                {
                  "fixed": "6.18.50"
                }
              ]
            },
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "6.19.0"
                },
                {
                  "fixed": "7.2.4"
                }
              ]
            }
          ],
          "package": {
            "name": "Kernel",
            "ecosystem": "Linux"
          },
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-80951.json"
          }
        }
      ],
      "modified": "2026-10-28T02:30:21.374709975Z",
      "provider": "osv",
      "references": [
        "https://git.kernel.org/stable/c/35aa6730b8c5626b879a4e893fe664f59bf07d7f",
        "https://git.kernel.org/stable/c/5697d779577e2786ff3348ae9b77020ac0cf0aab",
        "https://git.kernel.org/stable/c/7c099b0b292a68d0ef558527945dbfb756fbf893",
        "https://git.kernel.org/stable/c/7cc5ba756bc1cfffab9cb2695742f9f479dc73f7",
        "https://git.kernel.org/stable/c/aac3c5aababc7fb69d5bf5b0cc52d308574e3a8c",
        "https://git.kernel.org/stable/c/e2bda39d7f9f285ec803e200b5c1f17143d0b483",
        "https://git.kernel.org/stable/c/f296a0d5907bf88314dfda67245f7f69d1552470",
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/80xxx/CVE-2026-80951.json",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-80951",
        "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/80xxx/CVE-2026-80951.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-80951",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": null
  },
  "source_id": "core-osv",
  "document_id": 487745,
  "published_at": "2026-09-11T19:42:21.115+00:00"
}