In the Linux kernel, the following vulnerability has been resolved:
Bluetooth: iso: Fix circular lock in isolistenbis
This fixes the circular locking dependency warning below, by releasing the socket lock before enterning isolistenbis, 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 (sklock-AFBLUETOOTH-BTPROTOISO) at: isoconnectcfm+0x253/0x840 [bluetooth] [ 75.308021] but task is already holding lock: [ 75.308022] ffff8fdd61a10078 (&hdev->lock) at: hcileperadvreportevt+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] _mutexlock+0xad/0xc50 [ 75.308061] mutexlocknested+0x1b/0x30 [ 75.308063] isosocklisten+0x143/0x5c0 [bluetooth] [ 75.308085] _syslistensocket+0x49/0x60 [ 75.308088] _x64syslisten+0x4c/0x90 [ 75.308090] x64syscall+0x2517/0x25f0 [ 75.308092] dosyscall64+0x87/0x150 [ 75.308095] entrySYSCALL64afterhwframe+0x76/0x7e [ 75.308098] -> #0 (sklock-AFBLUETOOTH-BTPROTOISO){+.+.}-{0:0}: [ 75.308100] _lockacquire+0x155e/0x25f0 [ 75.308103] lockacquire+0xc9/0x300 [ 75.308105] locksocknested+0x32/0x90 [ 75.308107] isoconnectcfm+0x253/0x840 [bluetooth] [ 75.308128] hciconnectcfm+0x6c/0x190 [bluetooth] [ 75.308155] hcileperadvreportevt+0x27b/0x2f0 [bluetooth] [ 75.308180] hcilemetaevt+0xe7/0x200 [bluetooth] [ 75.308206] hcieventpacket+0x21f/0x5c0 [bluetooth] [ 75.308230] hcirxwork+0x3ae/0xb10 [bluetooth] [ 75.308254] processonework+0x212/0x740 [ 75.308256] workerthread+0x1bd/0x3a0 [ 75.308258] kthread+0xe4/0x120 [ 75.308259] retfromfork+0x44/0x70 [ 75.308261] retfromforkasm+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(sklock- AFBLUETOOTH-BTPROTOISO); [ 75.308268] lock(&hdev->lock); [ 75.308269] lock(sklock-AFBLUETOOTH-BTPROTOISO); [ 75.308270] * DEADLOCK *
[ 75.308271] 4 locks held by kworker/u81:2/2623: [ 75.308272] #0: ffff8fdd66e52148 ((wqcompletion)hci0#2){+.+.}-{0:0}, at: processonework+0x443/0x740 [ 75.308276] #1: ffffafb488b7fe48 ((workcompletion)(&hdev->rxwork)), at: processonework+0x1ce/0x740 [ 75.308280] #2: ffff8fdd61a10078 (&hdev->lock){+.+.}-{3:3} at: hcileperadvreportevt+0x47/0x2f0 [bluetooth] [ 75.308304] #3: ffffffffb6ba4900 (rcureadlock){....}-{1:2}, at: hciconnectcfm+0x29/0x190 [bluetooth]
[ { "signature_type": "Function", "id": "CVE-2024-54460-0474a15b", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@c541d7b5e17987ed330798b07d4ad508859c1c93", "signature_version": "v1", "target": { "function": "iso_sock_listen", "file": "net/bluetooth/iso.c" }, "digest": { "function_hash": "15587111462539369716171690134802693072", "length": 582.0 }, "deprecated": false }, { "signature_type": "Function", "id": "CVE-2024-54460-6ea143df", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@168e28305b871d8ec604a8f51f35467b8d7ba05b", "signature_version": "v1", "target": { "function": "iso_listen_bis", "file": "net/bluetooth/iso.c" }, "digest": { "function_hash": "74864258636593756801067458308788722549", "length": 1264.0 }, "deprecated": false }, { "signature_type": "Function", "id": "CVE-2024-54460-80cf3cf0", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@168e28305b871d8ec604a8f51f35467b8d7ba05b", "signature_version": "v1", "target": { "function": "iso_sock_listen", "file": "net/bluetooth/iso.c" }, "digest": { "function_hash": "15587111462539369716171690134802693072", "length": 582.0 }, "deprecated": false }, { "signature_type": "Line", "id": "CVE-2024-54460-81ff3238", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@c541d7b5e17987ed330798b07d4ad508859c1c93", "signature_version": "v1", "target": { "file": "net/bluetooth/iso.c" }, "digest": { "threshold": 0.9, "line_hashes": [ "289359248937798468105314298791090419182", "28940050306302164767573714205786978619", "21922230703583817183006801936127245751", "107102316882739898075670910372228138151", "182393267003825047854577706993461095305", "51033935301650459203709430878190410253", "125292334806729138510791255991784224981", "145394433020099721263793344668538171412", "14131248935987406132246357278282428158", "240494357045870868637194185013872939728", "50858111134482073883958457161402335014", "165656544665432042540651389299869089564", "214765298799103412590138593283038192599", "626105844694157192702078993262177800", "153838885561956277449064276135903443489", "122078328409498634815925638515516563755", "55883200022600251455827829971981311505", "23241417849889469682552146688625520923", "188433786043389569051233544475467355322", "69147110061025609806592673251318119409", "126709691600343261641769681464745656824", "337853742405313854461732688076541788375" ] }, "deprecated": false }, { "signature_type": "Line", "id": "CVE-2024-54460-906ebcfe", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@168e28305b871d8ec604a8f51f35467b8d7ba05b", "signature_version": "v1", "target": { "file": "net/bluetooth/iso.c" }, "digest": { "threshold": 0.9, "line_hashes": [ "289359248937798468105314298791090419182", "28940050306302164767573714205786978619", "21922230703583817183006801936127245751", "107102316882739898075670910372228138151", "182393267003825047854577706993461095305", "51033935301650459203709430878190410253", "125292334806729138510791255991784224981", "145394433020099721263793344668538171412", "14131248935987406132246357278282428158", "240494357045870868637194185013872939728", "50858111134482073883958457161402335014", "165656544665432042540651389299869089564", "214765298799103412590138593283038192599", "626105844694157192702078993262177800", "153838885561956277449064276135903443489", "122078328409498634815925638515516563755", "55883200022600251455827829971981311505", "23241417849889469682552146688625520923", "188433786043389569051233544475467355322", "69147110061025609806592673251318119409", "126709691600343261641769681464745656824", "337853742405313854461732688076541788375" ] }, "deprecated": false }, { "signature_type": "Function", "id": "CVE-2024-54460-cea91ad3", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@c541d7b5e17987ed330798b07d4ad508859c1c93", "signature_version": "v1", "target": { "function": "iso_listen_bis", "file": "net/bluetooth/iso.c" }, "digest": { "function_hash": "74864258636593756801067458308788722549", "length": 1264.0 }, "deprecated": false } ]