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

Bluetooth: MGMT: Fix status of pending commands flushed on power off

cmd_complete_rsp() receives a struct cmd_lookup and, for a pending
command that has no cmd_complete callback, falls through to
cmd_status_rsp(cmd, data). cmd_status_rsp() reads data as a u8 *, so
the status sent comes from the first byte of match->sk's
representation, not from match->mgmt_status.

commit f53e1c9c726d ("Bluetooth: MGMT: Fix possible crash on
mgmt_index_removed") changed the callers' data from &status to &match
and updated the cmd_complete branch to match->mgmt_status, but left
the fall-through passing data unchanged.

In mgmt_index_removed() match->sk is NULL, so every such command is
answered with status 0x00 (Success) instead of
MGMT_STATUS_INVALID_INDEX. In __mgmt_power_off() it is NULL too,
unless a Set Powered command was pending: then settings_rsp() has
stored that command's socket in match->sk, and the byte sent comes
from the socket pointer. Either way the status the caller set,
MGMT_STATUS_NOT_POWERED (or MGMT_STATUS_INVALID_INDEX when the device
is being unregistered), is lost.

Pass the status the callers set.

This was seen on a QCA9377 laptop: bluetoothd's Start Discovery,
pending when the adapter was powered off, was answered with Command
Status 0x00 and no parameters, and bluetoothd 5.72 crashed on the
zero-length success. BlueZ master has since added the length check
on that path ("adapter: Fix crash on short start discovery reply",
BlueZ a734b06059cb), but userspace should still be told Not Powered,
not Success.

Tested on Ubuntu 7.0.0-31 with a virtual controller (hci_vhci):
power off is held in HCI Write Scan Enable while a Start Discovery is
submitted, and the flush answers it with status 0x00 before this
change and 0x0f (Not Powered) after.
Published: 2026-10-26
Score: n/a
EPSS: n/a
KEV: No
Impact: Incorrect status reporting and potential crash in Bluetooth subsystem
Action: Apply Patch
AI Analysis

Impact

The bug occurs when a pending Bluetooth management command has no completion callback. The command response logic incorrectly interprets the socket pointer as a status byte, causing the adapter to report a success status (0x00) instead of the intended Not Powered or Invalid Index. This faulty status can lead to downstream crashes, as observed in BlueZ 5.72 when the zero‑length success response is processed. Hence, the flaw results in incorrect status reporting and an application crash.

Affected Systems

This defect appears in the Linux kernel’s Bluetooth management layer. The CNA lists only the Linux kernel, and no explicit version range is supplied, so all kernel builds that lack the commit that patches the bug are affected.

Risk and Exploitability

The CVSS and EPSS metrics are not provided. The flaw is triggered by a locally logged Bluetooth command that is still pending when the adapter is powered off or unregistered. Because the fault occurs in kernel space and requires a pending command, it does not represent a remote code execution vector but can cause denial of service or stability issues on affected systems. The lack of an EPSS score and absence from KEV indicates that exploitation is not widespread yet, yet the logic defect warrants patching.

Generated by OpenCVE AI on October 26, 2026 at 17:06 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade the Linux kernel to a version that includes the commit f53e1c9c726d or later.
  • Restart the Bluetooth daemon (systemctl restart bluetooth) to load the updated kernel modules.
  • Monitor system logs for unexpected "Command Status 0x00" replies and verify that no crash messages appear after the update.

Generated by OpenCVE AI on October 26, 2026 at 17:06 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Mon, 26 Oct 2026 17:45:00 +0000

Type Values Removed Values Added
First Time appeared Linux linux
Vendors & Products Linux linux

Mon, 26 Oct 2026 17:30:00 +0000

Type Values Removed Values Added
Weaknesses CWE-20

Mon, 26 Oct 2026 15:00:00 +0000

Type Values Removed Values Added
Description In the Linux kernel, the following vulnerability has been resolved: Bluetooth: MGMT: Fix status of pending commands flushed on power off cmd_complete_rsp() receives a struct cmd_lookup and, for a pending command that has no cmd_complete callback, falls through to cmd_status_rsp(cmd, data). cmd_status_rsp() reads data as a u8 *, so the status sent comes from the first byte of match->sk's representation, not from match->mgmt_status. commit f53e1c9c726d ("Bluetooth: MGMT: Fix possible crash on mgmt_index_removed") changed the callers' data from &status to &match and updated the cmd_complete branch to match->mgmt_status, but left the fall-through passing data unchanged. In mgmt_index_removed() match->sk is NULL, so every such command is answered with status 0x00 (Success) instead of MGMT_STATUS_INVALID_INDEX. In __mgmt_power_off() it is NULL too, unless a Set Powered command was pending: then settings_rsp() has stored that command's socket in match->sk, and the byte sent comes from the socket pointer. Either way the status the caller set, MGMT_STATUS_NOT_POWERED (or MGMT_STATUS_INVALID_INDEX when the device is being unregistered), is lost. Pass the status the callers set. This was seen on a QCA9377 laptop: bluetoothd's Start Discovery, pending when the adapter was powered off, was answered with Command Status 0x00 and no parameters, and bluetoothd 5.72 crashed on the zero-length success. BlueZ master has since added the length check on that path ("adapter: Fix crash on short start discovery reply", BlueZ a734b06059cb), but userspace should still be told Not Powered, not Success. Tested on Ubuntu 7.0.0-31 with a virtual controller (hci_vhci): power off is held in HCI Write Scan Enable while a Start Discovery is submitted, and the flush answers it with status 0x00 before this change and 0x0f (Not Powered) after.
Title Bluetooth: MGMT: Fix status of pending commands flushed on power off
First Time appeared Linux
Linux linux Kernel
CPEs cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
Vendors & Products Linux
Linux linux Kernel
References

Subscriptions

Linux Linux Linux Kernel
cve-icon MITRE

Status: PUBLISHED

Assigner: Linux

Published:

Updated: 2026-10-26T14:52:00.262Z

Reserved: 2026-09-25T10:25:14.390Z

Link: CVE-2026-99091

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-10-26T15:16:47.960

Modified: 2026-10-26T15:16:47.960

Link: CVE-2026-99091

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-10-26T17:30:15Z

Weaknesses
  • CWE-20

    Improper Input Validation