Bluetooth: ISO: fix iso_conn related locking and validity issues
In the Linux kernel, the following vulnerability has been resolved: Bluetooth: ISO: fix iso_conn related locking and validity issues sk->sk_state indicates whether iso_pi(sk)->conn is valid. Operations that check/update sk_state and access conn should hold lock_sock, otherwise they can race. The order of taking locks is hci_dev_lock > lock_sock > iso_conn_lock, which is how it is in connect/disconnect_cfm -> iso_conn_del -> iso_chan_del. Fix locking in iso_connect_cis/bis and sendmsg/recvmsg to take lock_sock around updating sk_state and conn. iso_conn_del must not occur during iso_connect_cis/bis, as it frees the iso_conn. Hold hdev->lock longer to prevent that. This should not reintroduce the issue fixed in commit 241f51931c35 ("Bluetooth: ISO: Avoid circular locking dependency"), since the we acquire locks in order. We retain the fix in iso_sock_connect to release lock_sock before iso_connect_* acquires hdev->lock. Similarly for commit 6a5ad251b7cd ("Bluetooth: ISO: Fix possible circular locking dependency"). We retain the fix in iso_conn_ready to not acquire iso_conn_lock before lock_sock. iso_conn_add shall return iso_conn with valid hcon. Make it so also when reusing an old CIS connection waiting for disconnect timeout (see __iso_sock_close where conn->hcon is set to NULL). Trace with iso_conn_del after iso_chan_add in iso_connect_cis: =============================================================== iso_sock_create:771: sock 00000000be9b69b7 iso_sock_init:693: sk 0000000
- Products
- Kernel
- Affected versions
- Not specified
- Fixed versions
- 6.1.42, 6.4.7
- CVEs
- CVE-2023-54164
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 7 Nov 2026, 02:07 UTC · Revision 1
Source evidence
Bluetooth: ISO: fix iso_conn related locking and validity issues
core-osv · Original sourcePublished 30 Dec 2025, 12:08 UTC
In the Linux kernel, the following vulnerability has been resolved: Bluetooth: ISO: fix iso_conn related locking and validity issues sk->sk_state indicates whether iso_pi(sk)->conn is valid. Operations that check/update sk_state and access conn should hold lock_sock, otherwise they can race. The order of taking locks is hci_dev_lock > lock_sock > iso_conn_lock, which is how it is in connect/disconnect_cfm -> iso_conn_del -> iso_chan_del. Fix locking in iso_connect_cis/bis and sendmsg/recvmsg to take lock_sock around updating sk_state and conn. iso_conn_del must not occur during iso_connect_cis/bis, as it frees the iso_conn. Hold hdev->lock longer to prevent that. This should not reintroduce the issue fixed in commit 241f51931c35 ("Bluetooth: ISO: Avoid circular locking dependency"), since the we acquire locks in order. We retain the fix in iso_sock_connect to release lock_sock before iso_connect_* acquires hdev->lock. Similarly for commit 6a5ad251b7cd ("Bluetooth: ISO: Fix possible circular locking dependency"). We retain the fix in iso_conn_ready to not acquire iso_conn_lock before lock_sock. iso_conn_add shall return iso_conn with valid hcon. Make it so also when reusing an old CIS connection waiting for disconnect timeout (see __iso_sock_close where conn->hcon is set to NULL). Trace with iso_conn_del after iso_chan_add in iso_connect_cis: =============================================================== iso_sock_create:771: sock 00000000be9b69b7 iso_sock_init:693: sk 0000000
osv:CVE-2023-54164
Kernel
Fixed versions: 6.1.42, 6.4.7
Complete source record
{
"id": "cab4f6f309f0bc002da65d77b0d162718159e887455f00778418f03a838f8c40",
"url": "https://osv.dev/vulnerability/CVE-2023-54164",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "Bluetooth: ISO: fix iso_conn related locking and validity issues",
"summary": "In the Linux kernel, the following vulnerability has been resolved: Bluetooth: ISO: fix iso_conn related locking and validity issues sk->sk_state indicates whether iso_pi(sk)->conn is valid. Operations that check/update sk_state and access conn should hold lock_sock, otherwise they can race. The order of taking locks is hci_dev_lock > lock_sock > iso_conn_lock, which is how it is in connect/disconnect_cfm -> iso_conn_del -> iso_chan_del. Fix locking in iso_connect_cis/bis and sendmsg/recvmsg to take lock_sock around updating sk_state and conn. iso_conn_del must not occur during iso_connect_cis/bis, as it frees the iso_conn. Hold hdev->lock longer to prevent that. This should not reintroduce the issue fixed in commit 241f51931c35 (\"Bluetooth: ISO: Avoid circular locking dependency\"), since the we acquire locks in order. We retain the fix in iso_sock_connect to release lock_sock before iso_connect_* acquires hdev->lock. Similarly for commit 6a5ad251b7cd (\"Bluetooth: ISO: Fix possible circular locking dependency\"). We retain the fix in iso_conn_ready to not acquire iso_conn_lock before lock_sock. iso_conn_add shall return iso_conn with valid hcon. Make it so also when reusing an old CIS connection waiting for disconnect timeout (see __iso_sock_close where conn->hcon is set to NULL). Trace with iso_conn_del after iso_chan_add in iso_connect_cis: =============================================================== iso_sock_create:771: sock 00000000be9b69b7 iso_sock_init:693: sk 0000000",
"evidence": "osv:CVE-2023-54164",
"products": [
{
"name": {
"value": "Kernel",
"evidence": "/affected/1/package/name"
},
"prerequisites": [],
"fixed_versions": [
{
"value": "6.1.42",
"evidence": "/affected/1/ranges"
},
{
"value": "6.4.7",
"evidence": "/affected/1/ranges"
}
],
"affected_versions": []
}
],
"severity": "high",
"structured": {
"id": "CVE-2023-54164",
"aliases": [
"CVE-2023-54164"
],
"metrics": [
{
"type": "CVSS_V3",
"score": "CVSS:3.1/AV:A/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H"
}
],
"affected": [
{
"ranges": [
{
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"type": "GIT",
"events": [
{
"introduced": "c524f9561c657b8af26dd4f67092b8928261aa62"
},
{
"fixed": "e969bfed84c1f88dc722a678ee08488e86f0ec1a"
}
]
},
{
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"type": "GIT",
"events": [
{
"introduced": "241f51931c35085449502c10f64fb3ecd6e02171"
},
{
"fixed": "88ad50f2b843a510bd7c922c0a4e2484aff9d645"
},
{
"fixed": "d40ae85ee62e3666f45bc61864b22121346f88ef"
}
]
},
{
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"type": "GIT",
"events": [
{
"introduced": "6.1.9"
},
{
"fixed": "6.1.42"
}
]
},
{
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"type": "GIT",
"events": [
{
"introduced": "2539cbc625c560d5432e2f0fc04bfe4a889cf737"
}
]
}
],
"versions": [
"v6.1.41",
"v6.1.40",
"v6.1.39",
"v6.1.38",
"v6.1.37",
"v6.1.36",
"v6.1.35",
"v6.1.34",
"v6.1.33",
"v6.1.32",
"v6.1.31",
"v6.1.30",
"v6.1.29",
"v6.1.28",
"v6.1.27",
"v6.1.26",
"v6.1.25",
"v6.1.24",
"v6.1.23",
"v6.1.22",
"v6.1.21",
"v6.1.20",
"v6.1.19",
"v6.1.18",
"v6.1.17",
"v6.1.16",
"v6.1.15",
"v6.1.14",
"v6.1.13",
"v6.1.12",
"v6.1.11",
"v6.1.10",
"v6.1.9",
"v6.1.190",
"v6.1.189",
"v6.1.188",
"v6.1.187",
"v6.1.186",
"v6.1.185",
"v6.1.184",
"v6.1.183",
"v6.1.182",
"v6.1.181",
"v6.1.180",
"v6.1.179",
"v6.1.178",
"v6.1.177",
"v6.1.176",
"v6.1.175",
"v6.1.174",
"v6.1.173",
"v6.1.172",
"v6.1.171",
"v6.1.170",
"v6.1.169",
"v6.1.168",
"v6.1.167",
"v6.1.166",
"v6.1.165",
"v6.1.164",
"v6.1.163",
"v6.1.162",
"v6.1.161",
"v6.1.160",
"v6.1.159",
"v6.1.158",
"v6.1.157",
"v6.1.156",
"v6.1.155",
"v6.1.154",
"v6.1.153",
"v6.1.152",
"v6.1.151",
"v6.1.150",
"v6.1.149",
"v6.1.148",
"v6.1.147",
"v6.1.146",
"v6.1.145",
"v6.1.144",
"v6.1.143",
"v6.1.142",
"v6.1.141",
"v6.1.140",
"v6.1.139",
"v6.1.138",
"v6.1.137",
"v6.1.136",
"v6.1.135",
"v6.1.134",
"v6.1.133",
"v6.1.132",
"v6.1.131",
"v6.1.130",
"v6.1.129",
"v6.1.128",
"v6.1.127",
"v6.1.126",
"v6.1.125",
"v6.1.124",
"v6.1.123",
"v6.1.122",
"v6.1.121",
"v6.1.120",
"v6.1.119",
"v6.1.118",
"v6.1.117",
"v6.1.116",
"v6.1.115",
"v6.1.114",
"v6.1.113",
"v6.1.112",
"v6.1.111",
"v6.1.110",
"v6.1.109",
"v6.1.108",
"v6.1.107",
"v6.1.106",
"v6.1.105",
"v6.1.104",
"v6.1.103",
"v6.1.102",
"v6.1.101",
"v6.1.100",
"v6.1.99",
"v6.1.98",
"v6.1.97",
"v6.1.96",
"v6.1.95",
"v6.1.94",
"v6.1.93",
"v6.1.92",
"v6.1.91",
"v6.1.90",
"v6.1.89",
"v6.1.88",
"v6.1.87",
"v6.1.86",
"v6.1.85",
"v6.1.84",
"v6.1.83",
"v6.1.82",
"v6.1.81",
"v6.1.80",
"v6.1.79",
"v6.1.78",
"v6.1.77",
"v6.1.76",
"v6.1.75",
"v6.1.74",
"v6.1.73",
"v6.1.72",
"v6.1.71",
"v6.1.70",
"v6.1.69",
"v6.1.68",
"v6.1.67",
"v6.1.66",
"v6.1.65",
"v6.1.64",
"v6.1.63",
"v6.1.62",
"v6.1.61",
"v6.1.60",
"v6.1.59",
"v6.1.58",
"v6.1.57",
"v6.1.56",
"v6.1.55",
"v6.1.54",
"v6.1.53",
"v6.1.52",
"v6.1.51",
"v6.1.50",
"v6.1.49",
"v6.1.48",
"v6.1.47",
"v6.1.46",
"v6.1.45",
"v6.1.44",
"v6.1.43",
"v6.1.42"
],
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2023-54164.json"
}
},
{
"ranges": [
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "0"
},
{
"fixed": "6.1.42"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "6.2.0"
},
{
"fixed": "6.4.7"
}
]
}
],
"package": {
"name": "Kernel",
"ecosystem": "Linux"
},
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2023-54164.json"
}
}
],
"modified": "2026-10-28T02:30:49.238604510Z",
"provider": "osv",
"references": [
"https://git.kernel.org/stable/c/88ad50f2b843a510bd7c922c0a4e2484aff9d645",
"https://git.kernel.org/stable/c/d40ae85ee62e3666f45bc61864b22121346f88ef",
"https://git.kernel.org/stable/c/e969bfed84c1f88dc722a678ee08488e86f0ec1a",
"https://github.com/CVEProject/cvelistV5/tree/main/cves/2023/54xxx/CVE-2023-54164.json",
"https://nvd.nist.gov/vuln/detail/CVE-2023-54164",
"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git"
],
"provider_metadata": {
"cna_assigner": "Linux",
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2023/54xxx/CVE-2023-54164.json"
}
},
"related_cves": [
{
"value": "CVE-2023-54164",
"evidence": "/id"
}
],
"security_relevant": true,
"severity_evidence": "/severity/0/score"
},
"source_id": "core-osv",
"document_id": 517233,
"published_at": "2025-12-30T12:08:40.357+00:00"
}