All of lore.kernel.org
 help / color / mirror / Atom feed
From: Pauli Virtanen <pav@iki.fi>
To: patchwork-bot+bluetooth@kernel.org, w15303746062 <w15303746062@163.com>
Cc: luiz.dentz@gmail.com, pmenzel@molgen.mpg.de, marcel@holtmann.org,
	 linux-bluetooth@vger.kernel.org, linux-kernel@vger.kernel.org,
	 stable@vger.kernel.org, 25181214217@stu.xidian.edu.cn
Subject: [REGRESSION] Bluetooth: hci_uart: fix UAFs and race conditions in close and init paths
Date: Sat, 13 Jun 2026 15:58:11 +0300	[thread overview]
Message-ID: <07e0a28650773abec711ee492fdb1bf5d21a6c98.camel@iki.fi> (raw)
In-Reply-To: <177920280488.2756414.8251481561878776667.git-patchwork-notify@kernel.org>

Hi,

ti, 2026-05-19 kello 15:00 +0000, patchwork-bot+bluetooth@kernel.org
kirjoitti:
> Hello:
> 
> This patch was applied to bluetooth/bluetooth-next.git (master)
> by Luiz Augusto von Dentz <luiz.von.dentz@intel.com>:
> 
> On Mon, 18 May 2026 10:49:49 +0800 you wrote:
> > From: Mingyu Wang <25181214217@stu.xidian.edu.cn>
> > 
> > Vulnerabilities leading to Use-After-Free (UAF) and Null Pointer
> > Dereference (NPD) conditions were observed in the lifecycle management
> > of hci_uart.
> > 
> > The primary issue arises because the workqueues (init_ready and
> > write_work) are only flushed/cancelled if the HCI_UART_PROTO_READY
> > flag is set during TTY close. If a hangup occurs before setup completes,
> > hci_uart_tty_close() skips the teardown of these workqueues and
> > proceeds to free the `hu` struct. When the scheduled work executes
> > later, it blindly dereferences the freed `hu` struct.
> > 
> > [...]
> 
> Here is the summary with links:
>   - [v9] Bluetooth: hci_uart: fix UAFs and race conditions in close and init paths
>     https://git.kernel.org/bluetooth/bluetooth-next/c/7db62a762f61
> 
> You are awesome, thank you!

This patch (c1bb9336ae6b54a5f6a353c4bd4ed9a4307e429b upstream) appears
to cause a regression in the following test case, which does 
btmgmt power off; btmgmt power on; in a loop.

At some point response to Reset command is not received, and the
(emulated) controller can no longer be powered on.

Found by noting that newer kernel versions fail automated testing.

Kernel built with the bluez tester config
https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/doc/tester.config

With c1bb9336ae6b54a5f6a353c4bd4ed9a4307e429b reverted, the power
off/on toggle continues indefinitely without errors.

Didn't investigate so far why precisely it starts failing.


$ cd bluez
$ git rev-parse HEAD
40f2e34b373944cf8142154881ce69f92c2be68d
$ make tools/test-runner emulator/btvirt
$ bash xtest.sh
...
hci0 Set Powered complete, settings: powered br/edr 
hci0 Set Powered complete, settings: br/edr 
hci0 Set Powered complete, settings: powered br/edr 
hci0 Set Powered complete, settings: br/edr 
Bluetooth: hci0: Opcode 0x0c03 failed: -110
Set Powered for hci0 failed with status 0x05 (Authentication Failed)
Set Powered for hci0 failed with status 0x05 (Authentication Failed)
Process 38 exited with status 0
reboot: Restarting system
reboot: machine restart
Set Powered for hci0 failed with status 0x05 (Authentication Failed)
Set Powered for hci0 failed with status 0x05 (Authentication Failed)
FAIL

----8<---- xtest.sh
#!/bin/sh

KERNEL=../linux/arch/x86_64/boot/bzImage

cat <<EOF > xtest-run.sh
for j in \$(seq 1 100); do
    ./tools/btmgmt power off 2>&1 | tee /tmp/test.log
    ./tools/btmgmt power on 2>&1 | tee -a /tmp/test.log
    if grep 'Authentication Failed' /tmp/test.log; then break; fi
done
EOF

./emulator/btvirt -s &
trap 'kill $(jobs -p)' EXIT

./tools/test-runner -k $KERNEL -u/tmp/bt-server-bredrle -- bash xtest-run.sh 2>&1 | tee xtest.log

if grep 'Authentication Failed' xtest.log; then
    echo "FAIL"
    exit 1
else
    echo "OK"
    exit 0
fi
----8<----

-- 
Pauli Virtanen

      reply	other threads:[~2026-06-13 12:58 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-05-13  6:45 [PATCH] Bluetooth: hci_uart: fix UAF in hci_uart_tty_close() w15303746062
2026-05-13  7:54 ` bluez.test.bot
2026-05-13  9:04 ` [PATCH] " Paul Menzel
2026-05-14 15:17   ` [PATCH v2] " w15303746062
2026-05-14 17:00     ` [v2] " bluez.test.bot
2026-05-15  6:10     ` [PATCH v2] " Greg KH
2026-05-15  6:50   ` [PATCH v3] " w15303746062
2026-05-15  8:43     ` [v3] " bluez.test.bot
2026-05-15 12:37 ` [PATCH] " Luiz Augusto von Dentz
2026-05-15 13:39   ` w15303746062
2026-05-15 14:05   ` [PATCH v4] " w15303746062
2026-05-15 15:12     ` [v4] " bluez.test.bot
2026-05-15 16:08     ` [PATCH v4] " Luiz Augusto von Dentz
2026-05-16  1:41       ` w15303746062
2026-05-16  2:22       ` [PATCH v5] " w15303746062
2026-05-16  5:11         ` [v5] " bluez.test.bot
2026-05-16  5:30       ` [PATCH v6] Bluetooth: hci_uart: fix UAFs and race conditions in close and init paths w15303746062
2026-05-16  7:33         ` [v6] " bluez.test.bot
2026-05-16  8:47       ` [PATCH v7] " w15303746062
2026-05-16  9:24         ` [v7] " bluez.test.bot
2026-05-18  1:36       ` [PATCH v8] " w15303746062
2026-05-18  2:49       ` [PATCH v9] " w15303746062
2026-05-18  6:16         ` [v9] " bluez.test.bot
2026-05-19 15:00         ` [PATCH v9] " patchwork-bot+bluetooth
2026-06-13 12:58           ` Pauli Virtanen [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=07e0a28650773abec711ee492fdb1bf5d21a6c98.camel@iki.fi \
    --to=pav@iki.fi \
    --cc=25181214217@stu.xidian.edu.cn \
    --cc=linux-bluetooth@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=luiz.dentz@gmail.com \
    --cc=marcel@holtmann.org \
    --cc=patchwork-bot+bluetooth@kernel.org \
    --cc=pmenzel@molgen.mpg.de \
    --cc=stable@vger.kernel.org \
    --cc=w15303746062@163.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.