| From bippy-5f407fcff5a0 Mon Sep 17 00:00:00 2001 |
| From: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| To: <linux-cve-announce@vger.kernel.org> |
| Reply-to: <cve@kernel.org>, <linux-kernel@vger.kernel.org> |
| Subject: CVE-2024-54460: Bluetooth: iso: Fix circular lock in iso_listen_bis |
| |
| Description |
| =========== |
| |
| In the Linux kernel, the following vulnerability has been resolved: |
| |
| Bluetooth: iso: Fix circular lock in iso_listen_bis |
| |
| This fixes the circular locking dependency warning below, by |
| releasing the socket lock before enterning iso_listen_bis, to |
| avoid any potential deadlock with hdev lock. |
| |
| [ 75.307983] ====================================================== |
| [ 75.307984] WARNING: possible circular locking dependency detected |
| [ 75.307985] 6.12.0-rc6+ #22 Not tainted |
| [ 75.307987] ------------------------------------------------------ |
| [ 75.307987] kworker/u81:2/2623 is trying to acquire lock: |
| [ 75.307988] ffff8fde1769da58 (sk_lock-AF_BLUETOOTH-BTPROTO_ISO) |
| at: iso_connect_cfm+0x253/0x840 [bluetooth] |
| [ 75.308021] |
| but task is already holding lock: |
| [ 75.308022] ffff8fdd61a10078 (&hdev->lock) |
| at: hci_le_per_adv_report_evt+0x47/0x2f0 [bluetooth] |
| [ 75.308053] |
| which lock already depends on the new lock. |
| |
| [ 75.308054] |
| the existing dependency chain (in reverse order) is: |
| [ 75.308055] |
| -> #1 (&hdev->lock){+.+.}-{3:3}: |
| [ 75.308057] __mutex_lock+0xad/0xc50 |
| [ 75.308061] mutex_lock_nested+0x1b/0x30 |
| [ 75.308063] iso_sock_listen+0x143/0x5c0 [bluetooth] |
| [ 75.308085] __sys_listen_socket+0x49/0x60 |
| [ 75.308088] __x64_sys_listen+0x4c/0x90 |
| [ 75.308090] x64_sys_call+0x2517/0x25f0 |
| [ 75.308092] do_syscall_64+0x87/0x150 |
| [ 75.308095] entry_SYSCALL_64_after_hwframe+0x76/0x7e |
| [ 75.308098] |
| -> #0 (sk_lock-AF_BLUETOOTH-BTPROTO_ISO){+.+.}-{0:0}: |
| [ 75.308100] __lock_acquire+0x155e/0x25f0 |
| [ 75.308103] lock_acquire+0xc9/0x300 |
| [ 75.308105] lock_sock_nested+0x32/0x90 |
| [ 75.308107] iso_connect_cfm+0x253/0x840 [bluetooth] |
| [ 75.308128] hci_connect_cfm+0x6c/0x190 [bluetooth] |
| [ 75.308155] hci_le_per_adv_report_evt+0x27b/0x2f0 [bluetooth] |
| [ 75.308180] hci_le_meta_evt+0xe7/0x200 [bluetooth] |
| [ 75.308206] hci_event_packet+0x21f/0x5c0 [bluetooth] |
| [ 75.308230] hci_rx_work+0x3ae/0xb10 [bluetooth] |
| [ 75.308254] process_one_work+0x212/0x740 |
| [ 75.308256] worker_thread+0x1bd/0x3a0 |
| [ 75.308258] kthread+0xe4/0x120 |
| [ 75.308259] ret_from_fork+0x44/0x70 |
| [ 75.308261] ret_from_fork_asm+0x1a/0x30 |
| [ 75.308263] |
| other info that might help us debug this: |
| |
| [ 75.308264] Possible unsafe locking scenario: |
| |
| [ 75.308264] CPU0 CPU1 |
| [ 75.308265] ---- ---- |
| [ 75.308265] lock(&hdev->lock); |
| [ 75.308267] lock(sk_lock- |
| AF_BLUETOOTH-BTPROTO_ISO); |
| [ 75.308268] lock(&hdev->lock); |
| [ 75.308269] lock(sk_lock-AF_BLUETOOTH-BTPROTO_ISO); |
| [ 75.308270] |
| *** DEADLOCK *** |
| |
| [ 75.308271] 4 locks held by kworker/u81:2/2623: |
| [ 75.308272] #0: ffff8fdd66e52148 ((wq_completion)hci0#2){+.+.}-{0:0}, |
| at: process_one_work+0x443/0x740 |
| [ 75.308276] #1: ffffafb488b7fe48 ((work_completion)(&hdev->rx_work)), |
| at: process_one_work+0x1ce/0x740 |
| [ 75.308280] #2: ffff8fdd61a10078 (&hdev->lock){+.+.}-{3:3} |
| at: hci_le_per_adv_report_evt+0x47/0x2f0 [bluetooth] |
| [ 75.308304] #3: ffffffffb6ba4900 (rcu_read_lock){....}-{1:2}, |
| at: hci_connect_cfm+0x29/0x190 [bluetooth] |
| |
| The Linux kernel CVE team has assigned CVE-2024-54460 to this issue. |
| |
| |
| Affected and fixed versions |
| =========================== |
| |
| Issue introduced in 6.9 with commit 02171da6e86a73e1b343b36722f5d9d5c04b3539 and fixed in 6.12.6 with commit c541d7b5e17987ed330798b07d4ad508859c1c93 |
| Issue introduced in 6.9 with commit 02171da6e86a73e1b343b36722f5d9d5c04b3539 and fixed in 6.13 with commit 168e28305b871d8ec604a8f51f35467b8d7ba05b |
| Issue introduced in 6.8.12 with commit a6c3af0a620082d191dabc69c4925b3e6c26dd48 |
| |
| Please see https://www.kernel.org for a full list of currently supported |
| kernel versions by the kernel community. |
| |
| Unaffected versions might change over time as fixes are backported to |
| older supported kernel versions. The official CVE entry at |
| https://cve.org/CVERecord/?id=CVE-2024-54460 |
| will be updated if fixes are backported, please check that for the most |
| up to date information about this issue. |
| |
| |
| Affected files |
| ============== |
| |
| The file(s) affected by this issue are: |
| net/bluetooth/iso.c |
| |
| |
| Mitigation |
| ========== |
| |
| The Linux kernel CVE team recommends that you update to the latest |
| stable kernel version for this, and many other bugfixes. Individual |
| changes are never tested alone, but rather are part of a larger kernel |
| release. Cherry-picking individual commits is not recommended or |
| supported by the Linux kernel community at all. If however, updating to |
| the latest release is impossible, the individual changes to resolve this |
| issue can be found at these commits: |
| https://git.kernel.org/stable/c/c541d7b5e17987ed330798b07d4ad508859c1c93 |
| https://git.kernel.org/stable/c/168e28305b871d8ec604a8f51f35467b8d7ba05b |