---
id: CVE-2026-90089
title: |-
  In the Linux kernel, the following vulnerability has been resolved:

  Bluetooth: btnxpuart: Validate the FW dump header length

  nxp_process_fw_dump() pulls the ACL header off the frame and then reads
  seq_num and buf_len from a struct nxp_…
summary: |-
  In the Linux kernel, the following vulnerability has been resolved:

  Bluetooth: btnxpuart: Validate the FW dump header length

  nxp_process_fw_dump() pulls the ACL header off the frame and then reads
  seq_num and buf_len from a struct nxp_…
severity: high
cvss: 7.1
cvssVector: 'CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:H'
vendor: Linux
product: Linux
affected:
  - >-
    Linux >= 998e447f443f138c90faa6ff3845082af419070e <
    a644b8df94966b672ac656577df98bd01bc88393
  - >-
    Linux >= 998e447f443f138c90faa6ff3845082af419070e <
    22d419db7f9a01bea22cfcf66774d2b2fd4bb354
  - >-
    Linux >= 998e447f443f138c90faa6ff3845082af419070e <
    060fa7592bdc043a93b6b7870f5b8551206d315d
  - Linux 6.15
published: '2026-09-17'
updated: '2026-09-18'
sourceUpdated: '2026-09-18T18:17:41.060'
source: NVD
sourceUrl: 'https://nvd.nist.gov/vuln/detail/CVE-2026-90089'
references:
  - url: 'https://git.kernel.org/stable/c/060fa7592bdc043a93b6b7870f5b8551206d315d'
    label: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
  - url: 'https://git.kernel.org/stable/c/22d419db7f9a01bea22cfcf66774d2b2fd4bb354'
    label: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
  - url: 'https://git.kernel.org/stable/c/a644b8df94966b672ac656577df98bd01bc88393'
    label: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
tags:
  - nvd
  - cve.org
epss: 0.00288
epssPercentile: 0.21672
ingestedAt: '2026-09-17T16:21:47.893Z'
---

## Overview

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

Bluetooth: btnxpuart: Validate the FW dump header length

nxp_process_fw_dump() pulls the ACL header off the frame and then reads
seq_num and buf_len from a struct nxp_fw_dump_hdr placed at skb->data,
without checking that the ACL payload is long enough to contain it.

h4_recv_buf() collects HCI_ACL_HDR_SIZE bytes of header followed by the
number of payload bytes named in that header, so skb->len is 4 + dlen
with dlen supplied by the controller and possibly smaller than the 8
byte dump header, or zero. A short frame with connection handle 0xfff
therefore reads both fields from beyond the received data.

Beyond the read itself, buf_len is what terminates a dump: a value of
zero makes the driver call hci_devcd_complete() and reset the
controller, so a truncated frame can end a dump early.

Use skb_pull_data() to validate and pull the FW dump header before
accessing its fields. Warn and reject the chunk if the header is
truncated.

## Remediation

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