====================================================== WARNING: possible circular locking dependency detected syzkaller #0 Tainted: G L ------------------------------------------------------ syz.6.351/6670 is trying to acquire lock: ffff0000da7ec0b8 (&hdev->lock){+.+.}-{4:4}, at: l2cap_chan_connect+0x84/0xe94 net/bluetooth/l2cap_core.c:7289 but task is already holding lock: ffff800089eef5a0 (rfcomm_mutex){+.+.}-{4:4}, at: rfcomm_dlc_open+0xa4/0x8b0 net/bluetooth/rfcomm/core.c:426 which lock already depends on the new lock. the existing dependency chain (in reverse order) is: -> #2 (rfcomm_mutex){+.+.}-{4:4}: __mutex_lock_common kernel/locking/mutex.c:646 [inline] __mutex_lock+0x164/0x1078 kernel/locking/mutex.c:821 mutex_lock_nested+0x24/0x30 kernel/locking/mutex.c:874 rfcomm_security_cfm+0x54/0x4c8 net/bluetooth/rfcomm/core.c:2223 hci_encrypt_cfm+0x30c/0x44c include/net/bluetooth/hci_core.h:2242 hci_encrypt_change_evt+0x4b4/0xb48 net/bluetooth/hci_event.c:3674 hci_event_func net/bluetooth/hci_event.c:7887 [inline] hci_event_packet+0x4e0/0x9c8 net/bluetooth/hci_event.c:7938 hci_rx_work+0x2f4/0xd78 net/bluetooth/hci_core.c:4053 process_one_work kernel/workqueue.c:3396 [inline] process_scheduled_works+0x91c/0x1250 kernel/workqueue.c:3479 worker_thread+0x798/0xbd0 kernel/workqueue.c:3560 kthread+0x304/0x3d4 kernel/kthread.c:436 ret_from_fork+0x10/0x20 arch/arm64/kernel/entry.S:854 -> #1 (hci_cb_list_lock){+.+.}-{4:4}: __mutex_lock_common kernel/locking/mutex.c:646 [inline] __mutex_lock+0x164/0x1078 kernel/locking/mutex.c:821 mutex_lock_nested+0x24/0x30 kernel/locking/mutex.c:874 hci_connect_cfm include/net/bluetooth/hci_core.h:2163 [inline] hci_remote_features_evt+0x284/0x5e0 net/bluetooth/hci_event.c:3786 hci_event_func net/bluetooth/hci_event.c:7887 [inline] hci_event_packet+0x4e0/0x9c8 net/bluetooth/hci_event.c:7938 hci_rx_work+0x2f4/0xd78 net/bluetooth/hci_core.c:4053 process_one_work kernel/workqueue.c:3396 [inline] process_scheduled_works+0x91c/0x1250 kernel/workqueue.c:3479 worker_thread+0x798/0xbd0 kernel/workqueue.c:3560 kthread+0x304/0x3d4 kernel/kthread.c:436 ret_from_fork+0x10/0x20 arch/arm64/kernel/entry.S:854 -> #0 (&hdev->lock){+.+.}-{4:4}: check_prev_add kernel/locking/lockdep.c:3209 [inline] check_prevs_add kernel/locking/lockdep.c:3328 [inline] validate_chain kernel/locking/lockdep.c:3952 [inline] __lock_acquire+0x1660/0x2b08 kernel/locking/lockdep.c:5288 lock_acquire+0x13c/0x320 kernel/locking/lockdep.c:5942 __mutex_lock_common kernel/locking/mutex.c:646 [inline] __mutex_lock+0x164/0x1078 kernel/locking/mutex.c:821 mutex_lock_nested+0x24/0x30 kernel/locking/mutex.c:874 l2cap_chan_connect+0x84/0xe94 net/bluetooth/l2cap_core.c:7289 l2cap_sock_connect+0x44c/0x654 net/bluetooth/l2cap_sock.c:255 kernel_connect+0x12c/0x1a0 net/socket.c:3755 rfcomm_session_create net/bluetooth/rfcomm/core.c:808 [inline] __rfcomm_dlc_open net/bluetooth/rfcomm/core.c:385 [inline] rfcomm_dlc_open+0x574/0x8b0 net/bluetooth/rfcomm/core.c:428 rfcomm_sock_connect+0x278/0x598 net/bluetooth/rfcomm/sock.c:419 connect_socket net/socket.c:2141 [inline] __sys_connect_file+0x13c/0x184 net/socket.c:2166 __sys_connect+0x114/0x194 net/socket.c:2183 __do_sys_connect net/socket.c:2189 [inline] __se_sys_connect net/socket.c:2186 [inline] __arm64_sys_connect+0x84/0x9c net/socket.c:2186 __invoke_syscall arch/arm64/kernel/syscall.c:35 [inline] invoke_syscall+0x98/0x244 arch/arm64/kernel/syscall.c:49 el0_svc_common+0xec/0x23c arch/arm64/kernel/syscall.c:121 do_el0_svc+0x4c/0x5c arch/arm64/kernel/syscall.c:140 el0_svc+0x60/0x1d8 arch/arm64/kernel/entry-common.c:796 el0t_64_sync_handler+0x44/0x104 arch/arm64/kernel/entry-common.c:815 el0t_64_sync+0x198/0x19c arch/arm64/kernel/entry.S:606 other info that might help us debug this: Chain exists of: &hdev->lock --> hci_cb_list_lock --> rfcomm_mutex Possible unsafe locking scenario: CPU0 CPU1 ---- ---- lock(rfcomm_mutex); lock(hci_cb_list_lock); lock(rfcomm_mutex); lock(&hdev->lock); *** DEADLOCK *** locks held by syz.6.351/6670: 1, last CPU#0: #0: ffff800089eef5a0 (rfcomm_mutex){+.+.}-{4:4}, at: rfcomm_dlc_open+0xa4/0x8b0 net/bluetooth/rfcomm/core.c:426 stack backtrace: CPU: 0 UID: 0 PID: 6670 Comm: syz.6.351 Tainted: G L syzkaller #0 PREEMPT Tainted: [L]=SOFTLOCKUP Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 09/23/2026 dump_backtrace(regs = 0000000000000000 tsk = 0000000000000000) Call trace: show_stack+0x2c/0x3c arch/arm64/kernel/stacktrace.c:499 (C) __dump_stack+0x30/0x40 lib/dump_stack.c:94 dump_stack_lvl+0xd8/0x12c lib/dump_stack.c:120 dump_stack+0x1c/0x28 lib/dump_stack.c:129 print_circular_bug+0x328/0x330 kernel/locking/lockdep.c:2087 check_noncircular+0x158/0x174 kernel/locking/lockdep.c:2219 check_prev_add kernel/locking/lockdep.c:3209 [inline] check_prevs_add kernel/locking/lockdep.c:3328 [inline] validate_chain kernel/locking/lockdep.c:3952 [inline] __lock_acquire+0x1660/0x2b08 kernel/locking/lockdep.c:5288 lock_acquire+0x13c/0x320 kernel/locking/lockdep.c:5942 __mutex_lock_common kernel/locking/mutex.c:646 [inline] __mutex_lock+0x164/0x1078 kernel/locking/mutex.c:821 mutex_lock_nested+0x24/0x30 kernel/locking/mutex.c:874 l2cap_chan_connect+0x84/0xe94 net/bluetooth/l2cap_core.c:7289 l2cap_sock_connect+0x44c/0x654 net/bluetooth/l2cap_sock.c:255 kernel_connect+0x12c/0x1a0 net/socket.c:3755 rfcomm_session_create net/bluetooth/rfcomm/core.c:808 [inline] __rfcomm_dlc_open net/bluetooth/rfcomm/core.c:385 [inline] rfcomm_dlc_open+0x574/0x8b0 net/bluetooth/rfcomm/core.c:428 rfcomm_sock_connect+0x278/0x598 net/bluetooth/rfcomm/sock.c:419 connect_socket net/socket.c:2141 [inline] __sys_connect_file+0x13c/0x184 net/socket.c:2166 __sys_connect+0x114/0x194 net/socket.c:2183 __do_sys_connect net/socket.c:2189 [inline] __se_sys_connect net/socket.c:2186 [inline] __arm64_sys_connect+0x84/0x9c net/socket.c:2186 __invoke_syscall arch/arm64/kernel/syscall.c:35 [inline] invoke_syscall+0x98/0x244 arch/arm64/kernel/syscall.c:49 el0_svc_common+0xec/0x23c arch/arm64/kernel/syscall.c:121 do_el0_svc+0x4c/0x5c arch/arm64/kernel/syscall.c:140 el0_svc+0x60/0x1d8 arch/arm64/kernel/entry-common.c:796 el0t_64_sync_handler+0x44/0x104 arch/arm64/kernel/entry-common.c:815 el0t_64_sync+0x198/0x19c arch/arm64/kernel/entry.S:606