Re: [PATCH] Bluetooth: iso: Fix UAF on iso_sock_disconn

From: Yang Li

Date: Wed Nov 05 2025 - 21:21:37 EST


Hi Paul,


[ EXTERNAL EMAIL ]

Dear Yang,


Thank you for your patch.

Am 05.11.25 um 10:02 schrieb Yang Li via B4 Relay:
From: Yang Li <yang.li@xxxxxxxxxxx>

kernel panic: Unable to handle kernel read from unreadable
memory at virtual address 00000000000003d8

No line break needed in pasted logs.


Call trace:
  iso_sock_disconn+0x110/0x1c8
  __iso_sock_close+0x50/0x164
  iso_sock_release+0x48/0xf0
  __sock_release+0x40/0xb4
  sock_close+0x18/0x28
  __fput+0xd8/0x28c
  __fput_sync+0x50/0x5c
  __arm64_sys_close+0x38/0x7c
  invoke_syscall+0x48/0x118
  el0_svc_common.constprop.0+0x40/0xe0
  do_el0_svc_compat+0x1c/0x34
  el0_svc_compat+0x30/0x88
  el0t_32_sync_handler+0x90/0x140
  el0t_32_sync+0x198/0x19c

Please add a paragraph about this problem, and how `iso_pi(sk)->conn`
can be NULL.


I will update it.

Thanks!


Signed-off-by: Yang Li <yang.li@xxxxxxxxxxx>
---
  net/bluetooth/iso.c | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/net/bluetooth/iso.c b/net/bluetooth/iso.c
index 74ec7d125c88..89c7700ceb81 100644
--- a/net/bluetooth/iso.c
+++ b/net/bluetooth/iso.c
@@ -838,14 +838,14 @@ static void __iso_sock_close(struct sock *sk)
      case BT_CONNECT:
      case BT_CONNECTED:
      case BT_CONFIG:
-             if (iso_pi(sk)->conn->hcon)
+             if (iso_pi(sk)->conn && iso_pi(sk)->conn->hcon)
                      iso_sock_disconn(sk);
              else
                      iso_chan_del(sk, ECONNRESET);
              break;

      case BT_CONNECT2:
-             if (iso_pi(sk)->conn->hcon &&
+             if (iso_pi(sk)->conn && iso_pi(sk)->conn->hcon &&
                  (test_bit(HCI_CONN_PA_SYNC, &iso_pi(sk)->conn->hcon->flags) ||
                  test_bit(HCI_CONN_PA_SYNC_FAILED, &iso_pi(sk)->conn->hcon->flags)))
                      iso_sock_disconn(sk);

This diff looks fine.


Kind regards,

Paul