📡 Linux 蓝牙子系统邮件列表周报
报告周期: 2026-08-20 — 2026-08-26
数据来源: lore.kernel.org/linux-bluetooth
报告生成: 2026-08-27
📊 本周概览
📋 本周要点速览
- 1. 🔴 CRITICAL — L2CAP reject-list 查找 UAF:
hci_conn 释放后仍被 reject-list 引用,触发 use-after-free(Chengfeng Ye) - 2. 🔴 HIGH — btintel_pcie 设备可控索引越界系列:RX/TX 完成处理与同步路径共 3 处数组越界修复(ZhaoJinming)
- 3. 🔴 HIGH — BlueZ eir 远程名解析栈溢出:
strnlenutf8 系列重构,根治 eir.c 栈缓冲溢出(Luiz Augusto von Dentz) - 4. 🟠 HIGH — btusb/mediatek 复位路径 runtime PM 引用泄漏(Jiajia Liu)
- 5. 🟠 HIGH — hci_conn 二次 LE 连接拒绝时泄漏(Radek Podgorny)
- 6. 🟡 MEDIUM — RFCOMM 会话拆除/安全确认竞态(Chengfeng Ye)
- 7. 🟡 MEDIUM — hci_codec 厂商 codec 计数长度未校验(Laxman Acharya Padhya)
- 8. 🟡 MEDIUM — btnxpuart FW dump 头长度未校验(Neeraj Kale)
- 9. 🟢 新特性 — BlueZ Security Level 上报系列:mgmt/device/D-Bus 全链路安全等级事件(Frédéric Danis)
- 10. 🟢 新特性 — BlueZ Fast Pair Message Stream + 组件电池(Matthias Kurz)
🔴 安全与稳定性修复详解
1. 【CRITICAL】Bluetooth: L2CAP: Fix reject-list lookup UAF
作者: Chengfeng Ye | 日期: 2026-08-22
问题: L2CAP 的 reject-list(拒绝列表)在连接建立失败路径中保存了指向 hci_conn 的引用,但 hci_conn 可能先于 reject-list 查找完成释放,导致 use-after-free。
修复内容: 在 reject-list 查找时校验 hci_conn 生命周期,确保引用有效后才使用;对连接释放路径与 reject-list 清理顺序做同步。
影响范围: 所有使用 L2CAP 连接的设备;UAF 可被恶意对端构造触发,属于内核提权/崩溃高危面。
2. 【HIGH】Bluetooth: btintel_pcie: Fix array bounds of device-controlled indices(系列 3/3)
作者: ZhaoJinming | 日期: 2026-08-20
问题: btintel_pcie 驱动 RX/TX 完成处理中的索引由设备固件控制(device-controlled)。固件异常或恶意固件可提供越界索引,驱动未做边界校验即访问数组:
- •
[PATCH 1/3] 同步路径 off-by-one bounds checks - •
[PATCH 2/3] TX completion handler 越界 - •
[PATCH 3/3] RX completion handler 越界
修复内容: 三个补丁分别在同步路径、TX/RX 异步完成回调中为固件提供的索引增加边界检查,越界即丢弃并记录,防止 OOB 读写。
影响范围: Intel PCIe 蓝牙控制器;固件侧异常可直接导致内核内存破坏,属于必须修复的高危项。
3. 【HIGH】Bluetooth: do not leak an hci_conn when a second LE connect is rejected
作者: Radek Podgorny | 日期: 2026-08-24(v2)
问题: 当已有 LE 连接在建立过程中收到第二个连接请求并被拒绝时,被拒绝路径未释放已分配的 hci_conn 对象,造成连接对象泄漏。长期运行下连接表膨胀、内存持续增长。
修复内容: 在拒绝第二个 LE connect 的分支中补充 hci_conn 释放逻辑,确保任何拒绝路径都不泄漏对象。
影响范围: 所有 LE 设备;反复触发连接竞争场景会积累泄漏,最终影响系统稳定性。
4. 【HIGH】Bluetooth: btusb: Fix leaked runtime PM reference(btusb_reset / mediatek)
作者: Jiajia Liu | 2026-08-21 v3 → 08-24 v4
问题: btusb_reset() 与 mediatek 复位路径中,pm_runtime_get() 成功后若后续流程提前返回错误,未配对调用 pm_runtime_put(),导致 runtime PM 引用计数泄漏。泄漏后设备无法再进入低功耗状态。
修复内容: 补丁在错误路径统一补充 pm_runtime_put() 对称释放(v3→v4 迭代完善了错误分支覆盖)。
影响范围: btusb 及 MTK 蓝牙设备;复位/固件加载失败场景下电源管理失效。
5. 【MEDIUM】Bluetooth: RFCOMM: serialize security confirmation handling
作者: Chengfeng Ye | 2026-08-23
问题: RFCOMM 安全确认(security confirmation)回调与连接建立流程存在竞态,多个确认并发时可能导致重复处理或空指针解引用。
修复内容: 为安全确认处理增加串行化/互斥保护,确保回调按顺序执行。
影响范围: RFCOMM 拨号网络/串口仿真场景,配对过程中的并发请求可触发。
6. 【MEDIUM】Bluetooth: RFCOMM: serialize session teardown
作者: Chengfeng Ye | 2026-08-22(v1→v2)
问题: RFCOMM 会话拆除路径无锁保护,与数据收发/安全流程并发时可出现双重释放或悬挂指针。
修复内容: 会话拆除与相关回调串行化,v2 细化锁的覆盖范围。
7. 【MEDIUM】Bluetooth: hci_codec: validate vendor codec count length
作者: Laxman Acharya Padhya | 2026-08-23 v1 → 08-24 v2
问题: HCI 事件中厂商 codec 的 count 字段未与实际数据长度比对,畸形事件可导致越界读取。
修复内容: 解析厂商 codec 列表前校验 count 与剩余缓冲长度,不匹配直接拒绝。
影响范围: 蓝牙音频/LE Audio 编解码器协商路径。
8. 【MEDIUM】Bluetooth: btnxpuart: Validate the FW dump header length
作者: Neeraj Kale | 2026-08-23(v4)
问题: NXP UART 蓝牙固件转储(FW dump)头长度字段未加校验,固件异常时可造成越界读取。
修复内容: 解析 dump 头时校验长度字段与实际数据一致。
9. 【MEDIUM】Bluetooth: SCO: avoid deadlock in sco_conn_free()
作者: Ali Firas | 2026-08-20
问题: sco_conn_free() 在持有锁的情况下调用可能再次请求同一锁的操作,形成死锁。
修复内容: 调整锁的获取顺序/范围,避免嵌套加锁。
影响范围: SCO 语音链路断开场景。
10. 【MEDIUM】Bluetooth: hci_mrvl: Fix wrong return value check of wait_on_bit_timeout()
作者: Gongwei Li | 2026-08-24(v1)→ 08-25(v2)
问题: Marvel 驱动对 wait_on_bit_timeout() 返回值判断方向错误(!= 0 应为超时失败却当作成功),固件载入超时被误判为成功,后续操作在固件未就绪状态下执行。
修复内容: 修正返回值检查逻辑,超时即报错。
11. 【MEDIUM】Bluetooth: hci_uart: Fix false success return in hci_uart_setup()
作者: Gongwei Li | 2026-08-21
问题: hci_uart_setup() 在底层 setup 失败时仍返回成功,HCI core 误认为初始化完成,后续命令失败且错误被吞掉。
修复内容: 透传底层错误返回。
12. 【MEDIUM】Bluetooth: btintel_pcie: Clear automask on spurious interrupts
作者: Kiran K | 2026-08-25(v1→v2)
问题: 假中断(spurious interrupt)发生后 automask 位未清除,导致后续中断被持续屏蔽,控制器中断失效。
修复内容: 处理假中断后显式清除 automask 位。
Revert 行为: Kamil Serwus 本周提交 Revert "Bluetooth: btrtl: fix RTL8761B/BU broken LE extended scan",随后 Junjie Cao 提交 btusb: limit RTL8761B BROKEN_EXT_SCAN quirk to 0bda:a728——原修复影响面过大,回退后将 quirk 限定到具体硬件 ID(0bda:a728),避免误伤其他 RTL8761 变体。
🟠 新功能与驱动支持
1. device_schedule_reprobe(): core helper and conversions(系列 4/4)
作者: Daniel Golle | 2026-08-21(v3)
- •
[1/4] driver core: add device_schedule_reprobe() — 新增内核通用辅助函数,后台调度设备重新探测 - •
[2/4] wifi: iwlwifi: use device_schedule_reprobe() — iwlwifi 使用新 helper - •
[3/4] Bluetooth: hci_h5: use device_schedule_reprobe() - •
[4/4] Bluetooth: btintel_pcie: use device_schedule_reprobe() after reset — 复位后调度 reprobe,替代旧的内联重探测逻辑
2. Bluetooth: btmtksdio: Stop discarding the hardware device id(系列 2/2)
作者: Chris Lu | 2026-08-25
- •
[1/2] 移除冗余 firmware 文件名覆盖 - •
[2/2] 将硬件设备 id 传递给 mt79xx_setup(),使固件文件名正确匹配硬件变体 - • 另:
btmtksdio: Do not fail probe on wakeup init failure(Gongwei Li, 08-25)——wakeup 初始化失败不应阻断探测
3. Bluetooth: hci_sync: wait for directed advertising completion(v3→v5)
作者: Chengfeng Ye | 2026-08-22~24
问题: directed advertising(定向广播)发送后未等待完成同步即继续,命令序列可能乱序。
修复内容: 在 hci_sync 中等待 directed advertising 完成事件后再推进状态机,v5 收敛了对超时/错误路径的处理。
4. Bluetooth: hci_sync: Serialize local codec list cleanup
作者: Chengfeng Ye | 2026-08-22
问题: 本地 codec 列表清理与读取并发时存在竞态。
修复内容: 清理操作加锁串行化。
5. Bluetooth: mt7925: trigger reset on WMT timeout(RFC v2)
作者: George Maraveyas | 2026-08-22
问题: MT7925 WMT 命令超时后驱动不主动复位,控制器进入异常状态。
修复内容: WMT 超时触发设备复位(RFC 讨论中)。
6. 其他驱动调整
- • btsdio: Do not bind to non-removable BCM4359(Rudi Heitbaum, 08-20)——避免误绑定
- • hci_qca / pm: Convert to DEFINE_SIMPLE_DEV_PM_OPS()(Triet Hoang, Li Jun v5)——PM 宏现代化,消除弃用 API 警告
🔧 驱动子系统更新
| | |
|---|
| | PCIe 数组越界(3)、automask、reprobe |
| | runtime PM 泄漏(2)、RTL8761B quirk 限定 |
| | 硬件设备 id 传递、wakeup probe、mt7925 WMT 复位 |
| | directed advertising 等待、codec 清理串行化 |
| | |
| | |
| | LE extended scan quirk Revert |
🟦 核外协议栈——BlueZ 用户空间专题
BlueZ 补丁数: 49(含版本迭代,核心系列 6 个)
🔴 安全修复
eir: Fix stack buffer overflow when parsing the remote name(str2utf8 系列 1/10)
作者: Luiz Augusto von Dentz | 2026-08-20(v2)
问题: eir.c 解析远端设备名时使用 strnlenutf8 计算拷贝长度,但 strnlenutf8 对畸形 UTF-8 序列的处理不严谨,可读越界并导致栈缓冲溢出。
修复内容: 系列引入统一 str2utf8/strnlenutf8 工具函数:
- •
[01/10] eir: 修复栈缓冲溢出(本补丁) - •
[02/10] shared/ad: 修复读取越过已拷贝名称 - •
[04/10] shared/util: 让 strnlenutf8 拒绝畸形序列 - •
[07/10] 用 str2utf8 替换各处的 name2utf8 拷贝 - •
[08/10] device: 修复名称截断拆分 UTF-8 序列的问题
影响范围: BlueZ 所有解析远端设备名的路径(EIR/AD 广播数据),恶意设备可构造畸形名称触发栈溢出——用户态远程溢出,严重性高。
gatt-server: Fix integer overflow(v2→v3)
作者: zuohsh | 2026-08-21
问题: gatt-server 处理长属性值时存在整数溢出,可能错误截断或越界;v3 另修复 3 个 CI 报告的 VLA 警告。
🟢 新功能
mgmt/device: report link security level to D-Bus clients(系列 6/6,v3)
作者: Frédéric Danis | 2026-08-20~21
功能: 将链路安全等级(Security Level)从 mgmt 层一路暴露到 D-Bus:
- •
mgmt: Add Security Level Changed event(内核 mgmt 事件透传) - •
monitor: Add support for Mgmt Security Level changed event - •
device: Add SecurityLevel properties to org.bluez.Device1 - •
org.bluez.Device: Add Security Level related properties - •
client: Display SecurityLevel in device info
意义: 应用层首次可感知连接实际安全等级,对安全敏感应用(支付、门禁)有直接价值。
Add component batteries and Fast Pair Message Stream(系列 4/4,v2)
作者: Matthias Kurz | 2026-08-21
- •
[1/4] battery: Add component battery objects — 组件级电池对象(耳机左右耳/充电盒独立上报) - •
[2/4] doc: Document component battery objects - •
[3/4] fastpair: Add Message Stream battery profile — Google Fast Pair Message Stream 电池协议 - •
[4/4] test: Add Fast Pair Message Stream tool
player: Fix crash and related defects around the pending request(系列 5/5)
作者: George Kiagiadakis | 2026-08-21
- •
[1/5] 修复 MediaItem1.Play() 无浏览范围时崩溃 - •
[2/5] player 销毁时回答挂起请求(避免悬挂) - •
[3/5] 修复 SetBrowsedPlayer 后 NumberOfItems 不更新 - •
[4/5] 忙碌的 Search() 返回 EBUSY - •
[5/5] 新增 media player 测试
ranging: mode validation(2/2)
作者: Naga Bhavani Akella | 2026-08-20
- •
[1/2] src: 修改 ChannelSounding MaxTxPower 选项文档 - •
[2/2] client: 强制校验有效的 Main Mode / Sub Mode 组合
其他
- •
tools/iso-tester: fix GIOChannel refcounting(Pauli Virtanen, v2)——refcount 泄漏修复 - •
bluetooth.service: Fix ConfigurationDirectory warning(Bastien Nocera) - •
SECURITY: Add top-level security doc + doc: Remove obsolete security-bugs.rst(Bastien Nocera, 2/2)——安全性文档体系重组 - •
build: Ignore the test-sdp-xml binary(George Kiagiadakis)
BlueZ 模块分布
| | |
|---|
| | |
| mgmt/monitor/device/client | | Security Level 上报系列(v1/v2/v3 迭代) |
| | |
| | |
| | |
| | |
| 其他 (ranging/iso-tester/build) | | |
🔭 下周关注点
- 1. btintel_pcie 越界修复系列合入状态 —— 3 个设备可控索引补丁是否进入 bluetooth-next
- 2. RTL8761B quirk 收敛 —— Revert + ID 限定后是否引发新回归
- 3. BlueZ Security Level 系列 — v3 后是否被维护者接受合并
- 4. str2utf8 重构合入 —— 涉及 eir/ad/device 多处,关注 merge 后测试覆盖
- 5. mt7925 WMT 超时复位(RFC) —— RFC 讨论结论与 v1 发布