<feed xmlns='http://www.w3.org/2005/Atom'>
<title>wireguard-linux/drivers/bluetooth, branch davem/net</title>
<subtitle>WireGuard for the Linux kernel</subtitle>
<id>https://git.zx2c4.com/wireguard-linux/atom/drivers/bluetooth?h=davem%2Fnet</id>
<link rel='self' href='https://git.zx2c4.com/wireguard-linux/atom/drivers/bluetooth?h=davem%2Fnet'/>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/wireguard-linux/'/>
<updated>2026-09-23T13:32:38Z</updated>
<entry>
<title>Bluetooth: btintel: validate DDC record lengths</title>
<updated>2026-09-23T13:32:38Z</updated>
<author>
<name>Sai Teja Aluvala</name>
<email>aluvala.sai.teja@intel.com</email>
</author>
<published>2026-09-22T13:03:11Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/wireguard-linux/commit/?id=c9c15d4d8956df8c564f7c210e4dc5b9b820d97a'/>
<id>urn:sha1:c9c15d4d8956df8c564f7c210e4dc5b9b820d97a</id>
<content type='text'>
Parse DDC record lengths in unsigned storage so 0xFF does not wrap.
Reject records smaller than the mandatory three-byte header, records
exceeding U8_MAX, and records exceeding remaining firmware bytes before
issuing Intel_Write_DDC.

This issue was reported by Claude Mythos.

Fixes: 145f2368c5fd ("Bluetooth: btintel: Add Device Configuration support")
Signed-off-by: Sai Teja Aluvala &lt;aluvala.sai.teja@intel.com&gt;
Signed-off-by: Luiz Augusto von Dentz &lt;luiz.von.dentz@intel.com&gt;
</content>
</entry>
<entry>
<title>Bluetooth: btintel_pcie: reject oversized TX packets in send_frame()</title>
<updated>2026-09-23T13:29:54Z</updated>
<author>
<name>Chandrashekar Devegowda</name>
<email>chandrashekar.devegowda@intel.com</email>
</author>
<published>2026-09-22T06:40:22Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/wireguard-linux/commit/?id=f771f96557a4d953a7e4d045870547271e36e819'/>
<id>urn:sha1:f771f96557a4d953a7e4d045870547271e36e819</id>
<content type='text'>
btintel_pcie_send_frame() eventually copies skb-&gt;data into a fixed
BTINTEL_PCIE_BUFFER_SIZE (4096) DMA buffer via memcpy() in
btintel_pcie_prepare_tx(), with a 4-byte PCIe type header prepended.
A user-space process with HCI_CHANNEL_USER access can inject an
oversized packet and overflow the buffer.

Reject packets larger than
BTINTEL_PCIE_BUFFER_SIZE - BTINTEL_PCIE_HCI_TYPE_LEN on entry.

Fixes: 6e65a09f9275 ("Bluetooth: btintel_pcie: Add *setup* function to download firmware")
Cc: stable@vger.kernel.org
Signed-off-by: Chandrashekar Devegowda &lt;chandrashekar.devegowda@intel.com&gt;
Signed-off-by: Luiz Augusto von Dentz &lt;luiz.von.dentz@intel.com&gt;
</content>
</entry>
<entry>
<title>Bluetooth: btintel_pcie: fix plen overflow in btintel_pcie_recv_frame()</title>
<updated>2026-09-23T13:29:27Z</updated>
<author>
<name>Chandrashekar Devegowda</name>
<email>chandrashekar.devegowda@intel.com</email>
</author>
<published>2026-09-22T06:40:21Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/wireguard-linux/commit/?id=7dbeb6935ac331b0cba6c41cabd8e9d02d5f64ea'/>
<id>urn:sha1:7dbeb6935ac331b0cba6c41cabd8e9d02d5f64ea</id>
<content type='text'>
plen is u16 and computed as HDR_SIZE + dlen. For ACL/ISO frames dlen
is a 16-bit field, so a value &gt;= 0xFFFC wraps the sum, bypassing the
"skb-&gt;len &lt; plen" check and letting skb_trim() truncate the packet.

Widen plen to u32 so the addition cannot wrap.

Fixes: c2b636b3f788 ("Bluetooth: btintel_pcie: Add support for PCIe transport")
Cc: stable@vger.kernel.org
Signed-off-by: Chandrashekar Devegowda &lt;chandrashekar.devegowda@intel.com&gt;
Signed-off-by: Luiz Augusto von Dentz &lt;luiz.von.dentz@intel.com&gt;
</content>
</entry>
<entry>
<title>Bluetooth: btintel: fix buffer over-read in btintel_hw_error()</title>
<updated>2026-09-23T13:28:19Z</updated>
<author>
<name>Chandrashekar Devegowda</name>
<email>chandrashekar.devegowda@intel.com</email>
</author>
<published>2026-09-22T06:40:20Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/wireguard-linux/commit/?id=40eb4b18ad167b63644c27fa67a7400ba050379a'/>
<id>urn:sha1:40eb4b18ad167b63644c27fa67a7400ba050379a</id>
<content type='text'>
The "Exception info %s" print uses skb-&gt;data + 1, but the 12-byte
payload is not guaranteed to be NUL-terminated and can be read past
its end.

Bound the print with "%.*s" and skb-&gt;len - 1.

Fixes: 973bb97e5aee ("Bluetooth: btintel: Add generic function for handling hardware errors")
Cc: stable@vger.kernel.org
Signed-off-by: Chandrashekar Devegowda &lt;chandrashekar.devegowda@intel.com&gt;
Signed-off-by: Luiz Augusto von Dentz &lt;luiz.von.dentz@intel.com&gt;
</content>
</entry>
<entry>
<title>Bluetooth: btintel_pcie: validate device-supplied DMA indices</title>
<updated>2026-09-21T13:37:20Z</updated>
<author>
<name>Ravindra</name>
<email>ravindra@intel.com</email>
</author>
<published>2026-09-15T05:12:15Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/wireguard-linux/commit/?id=37a11129345337efd6eef8e62b03b6348cd0dd8b'/>
<id>urn:sha1:37a11129345337efd6eef8e62b03b6348cd0dd8b</id>
<content type='text'>
In btintel_pcie_msix_rx_handle(), the driver processes RX completion
descriptors (urbd1) written by the PCIe device into DMA-coherent memory.
urbd1-&gt;frbd_tag (a 16-bit field fully controlled by the device firmware
via DMA) is used directly as an array index into rxq-&gt;bufs[] without any
bounds check. rxq-&gt;bufs[] has only BTINTEL_PCIE_RX_DESCS_COUNT (64)
entries, while frbd_tag can be any value 0-65535. A malicious or
malfunctioning device can write an out-of-range frbd_tag, causing the
driver to dereference an out-of-bounds data_buf pointer.

Additionally, cr_hia is read from a DMA-shared index array also writable
by the device; if the device sets cr_hia &gt;= rxq-&gt;count, the while-loop
never terminates because cr_tia is wrapped via modulo rxq-&gt;count and can
never equal an out-of-range cr_hia.

Add bounds validation for cr_hia and frbd_tag in the RX path, and cr_hia
in the TX path. Log invalid values with bt_dev_err before returning.

Fixes: c2b636b3f788 ("Bluetooth: btintel_pcie: Add support for PCIe transport")
Signed-off-by: Ravindra &lt;ravindra@intel.com&gt;
Signed-off-by: Luiz Augusto von Dentz &lt;luiz.von.dentz@intel.com&gt;
</content>
</entry>
<entry>
<title>Bluetooth: btnxpuart: Fix skb leak in nxp_process_fw_dump()</title>
<updated>2026-09-16T17:32:24Z</updated>
<author>
<name>Zijun Hu</name>
<email>zijun.hu@oss.qualcomm.com</email>
</author>
<published>2026-09-16T02:17:18Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/wireguard-linux/commit/?id=f2bbb36426581045a8bf7793da5419b9375e4348'/>
<id>urn:sha1:f2bbb36426581045a8bf7793da5419b9375e4348</id>
<content type='text'>
When CONFIG_DEV_COREDUMP=n, hci_devcd_append() returns -EOPNOTSUPP
without freeing its skb argument. This leaks the cloned skb and also
prevents nxp_set_ind_reset() from being called to perform recovery.

Fix by guarding the hci_devcd_append(hdev, skb_clone(skb, GFP_ATOMIC))
call with IS_ENABLED(CONFIG_DEV_COREDUMP).

Fixes: 998e447f443f ("Bluetooth: btnxpuart: Add support for HCI coredump feature")
Signed-off-by: Zijun Hu &lt;zijun.hu@oss.qualcomm.com&gt;
Signed-off-by: Luiz Augusto von Dentz &lt;luiz.von.dentz@intel.com&gt;
</content>
</entry>
<entry>
<title>Bluetooth: btintel_pcie: fix off-by-one bounds check in RX submit</title>
<updated>2026-09-15T18:55:27Z</updated>
<author>
<name>Sai Teja Aluvala</name>
<email>aluvala.sai.teja@intel.com</email>
</author>
<published>2026-09-11T11:52:22Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/wireguard-linux/commit/?id=2ea5a87a5a7ae58cb2662b8a7d06f209383e1765'/>
<id>urn:sha1:2ea5a87a5a7ae58cb2662b8a7d06f209383e1765</id>
<content type='text'>
btintel_pcie_submit_rx() used frbd_index &gt; rxq-&gt;count to guard the
FRBD array access, allowing frbd_index == rxq-&gt;count to pass through
and index one element past the end of the array. Change the check to
&gt;= rxq-&gt;count so every out-of-range index is rejected.

This issue was reported by Claude Mythos.

Fixes: c2b636b3f788 (Bluetooth: btintel_pcie: Add support for PCIe transport)
Signed-off-by: Sai Teja Aluvala &lt;aluvala.sai.teja@intel.com&gt;
Signed-off-by: Luiz Augusto von Dentz &lt;luiz.von.dentz@intel.com&gt;
</content>
</entry>
<entry>
<title>Bluetooth: btmtksdio: Fix PM runtime reference leak in shutdown</title>
<updated>2026-09-15T18:55:01Z</updated>
<author>
<name>Tzung-Bi Shih</name>
<email>tzungbi@kernel.org</email>
</author>
<published>2026-09-14T09:47:29Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/wireguard-linux/commit/?id=7b60ee5f46f2ee329de661f7c68b6818d8136220'/>
<id>urn:sha1:7b60ee5f46f2ee329de661f7c68b6818d8136220</id>
<content type='text'>
In btmtksdio_shutdown(), pm_runtime_get_sync() is called at the
beginning of the function.  However, if sending the WMT function
control command fails later, the driver returns early.

It bypasses the corresponding pm_runtime_put_noidle() and
pm_runtime_disable() calls, leaking the PM usage counter and leaving PM
runtime enabled indefinitely.

Fall through to execute the PM runtime cleanup block even if WMT errors.

Fixes: 7f3c563c575e ("Bluetooth: btmtksdio: Add runtime PM support to SDIO based Bluetooth")
Signed-off-by: Tzung-Bi Shih &lt;tzungbi@kernel.org&gt;
Signed-off-by: Luiz Augusto von Dentz &lt;luiz.von.dentz@intel.com&gt;
</content>
</entry>
<entry>
<title>Bluetooth: btmtksdio, btmtkuart: validate WMT event length before struct access</title>
<updated>2026-09-15T18:54:54Z</updated>
<author>
<name>Chris Lu</name>
<email>chris.lu@mediatek.com</email>
</author>
<published>2026-09-14T06:56:54Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/wireguard-linux/commit/?id=8879e3e0a84a86954c855caceead4867e74a9a27'/>
<id>urn:sha1:8879e3e0a84a86954c855caceead4867e74a9a27</id>
<content type='text'>
btmtksdio.c and btmtkuart.c cast a received WMT event straight to
struct btmtk_hci_wmt_evt and read its op/flag fields without checking
the event is long enough to contain them, unlike btmtk.c. The
FUNC_CTRL case then further casts to struct btmtk_hci_wmt_evt_funcc
and reads its 2-byte status field, again without a length check.
Firmware that sends a short or malformed WMT event makes both drivers
read past the end of the received SKB.

Mirror btmtk.c: validate the base WMT header with skb_pull_data()
before touching any of its fields, and when a FUNC_CTRL event turns
out to be the short, header-only form (a plain enable/disable ack
with no status word), decode the result from the header's own flag
byte instead (0 = success, otherwise failure).

Verified setup on MT7920, MT7921, MT7922 and MT7925: no regression.

Fixes: 9aebfd4a2200 ("Bluetooth: mediatek: add support for MediaTek MT7663S and MT7668S SDIO devices")
Fixes: e0b67035a90b ("Bluetooth: mediatek: update the common setup between MT7622 and other devices")
Assisted-by: Claude:claude-opus-5
Signed-off-by: Chris Lu &lt;chris.lu@mediatek.com&gt;
Signed-off-by: Luiz Augusto von Dentz &lt;luiz.von.dentz@intel.com&gt;
</content>
</entry>
<entry>
<title>Bluetooth: btmtk: fix wrong status for short WMT FUNC_CTRL events</title>
<updated>2026-09-15T18:54:48Z</updated>
<author>
<name>Chris Lu</name>
<email>chris.lu@mediatek.com</email>
</author>
<published>2026-09-14T06:56:53Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/wireguard-linux/commit/?id=78b6abd6c7a7591aacdae657f813214dae4fcd3b'/>
<id>urn:sha1:78b6abd6c7a7591aacdae657f813214dae4fcd3b</id>
<content type='text'>
A too-short BTMTK_WMT_FUNC_CTRL event (WMT header only, no trailing
2-byte status word) is always treated as BTMTK_WMT_ON_UNDONE. This
short form is how firmware acks a plain enable/disable request, and
the actual result is carried in the header's own flag byte (0 =
success), not a separate status word. Decode it from there instead of
assuming failure.

Verified setup on MT7920, MT7921, MT7922 and MT7925: no regression.

Fixes: e3ac0d9f1a20 ("Bluetooth: btmtk: accept too short WMT FUNC_CTRL events")
Assisted-by: Claude:claude-opus-5
Signed-off-by: Chris Lu &lt;chris.lu@mediatek.com&gt;
Signed-off-by: Luiz Augusto von Dentz &lt;luiz.von.dentz@intel.com&gt;
</content>
</entry>
</feed>
