GHSA-53MQ-P582-HHFX
Vulnerability from github – Published: 2026-08-28 09:31 – Updated: 2026-08-28 09:31In the Linux kernel, the following vulnerability has been resolved:
Bluetooth: sco: Fix a race condition in sco_sock_timeout()
sco_sock_timeout() runs asynchronously and lock_sock(sk). If the socket is closing while the timer is running, it holds the same lock (lock_sock(sk)) twice, leading to a deadlock.
CPU 0 CPU 1 ==================== ====================== sco_sock_close() sco_sock_timeout() lock_sock(sk) // <-- LOCK __sco_sock_close() sco_chan_del() sco_conn_put() sco_conn_free() disable_delayed_work_sync() lock(sk) // <-- SAME LOCK
Fix this by moving disable_delayed_work_sync() outside of lock_sock(sk), ensuring that no lock_sock(sk) is held before sco_sock_timeout().
Lockdep splat:
WARNING: possible circular locking dependency detected 6.13.0-rc4 #7 Not tainted
syz-executor292/9514 is trying to acquire lock: ffff8881115d5070 ((work_completion)(&(&conn->timeout_work)->work)){+.+.}-{0:0}, at: rcu_lock_acquire sect/v6.13-rc4/./include/linux/rcupdate.h:337 [inline] ffff8881115d5070 ((work_completion)(&(&conn->timeout_work)->work)){+.+.}-{0:0}, at: rcu_read_lock sect/v6.13-rc4/./include/linux/rcupdate.h:849 [inline] ffff8881115d5070 ((work_completion)(&(&conn->timeout_work)->work)){+.+.}-{0:0}, at: start_flush_work sect/v6.13-rc4/kernel/workqueue.c:4137 [inline] ffff8881115d5070 ((work_completion)(&(&conn->timeout_work)->work)){+.+.}-{0:0}, at: __flush_work+0xd1/0xc40 sect/v6.13-rc4/kernel/workqueue.c:4195
but task is already holding lock: ffff88807db3a258 (sk_lock-AF_BLUETOOTH-BTPROTO_SCO){+.+.}-{0:0}, at: lock_sock sect/v6.13-rc4/./include/net/sock.h:1623 [inline] ffff88807db3a258 (sk_lock-AF_BLUETOOTH-BTPROTO_SCO){+.+.}-{0:0}, at: sco_sock_close+0x25/0x100 sect/v6.13-rc4/net/bluetooth/sco.c:524
which lock already depends on the new lock.
the existing dependency chain (in reverse order) is:
-> #1 (sk_lock-AF_BLUETOOTH-BTPROTO_SCO){+.+.}-{0:0}: lock_acquire+0x1c4/0x520 sect/v6.13-rc4/kernel/locking/lockdep.c:5849 lock_sock_nested+0x48/0x130 sect/v6.13-rc4/net/core/sock.c:3622 lock_sock sect/v6.13-rc4/./include/net/sock.h:1623 [inline] sco_sock_timeout+0xbe/0x270 sect/v6.13-rc4/net/bluetooth/sco.c:158 process_one_work sect/v6.13-rc4/kernel/workqueue.c:3229 [inline] process_scheduled_works+0xa99/0x18f0 sect/v6.13-rc4/kernel/workqueue.c:3310 worker_thread+0x8a9/0xd80 sect/v6.13-rc4/kernel/workqueue.c:3391 kthread+0x2c6/0x360 sect/v6.13-rc4/kernel/kthread.c:389 ret_from_fork+0x4e/0x80 sect/v6.13-rc4/arch/x86/kernel/process.c:147 ret_from_fork_asm+0x1a/0x30 sect/v6.13-rc4/arch/x86/entry/entry_64.S:244
-> #0 ((work_completion)(&(&conn->timeout_work)->work)){+.+.}-{0:0}: check_prev_add sect/v6.13-rc4/kernel/locking/lockdep.c:3161 [inline] check_prevs_add sect/v6.13-rc4/kernel/locking/lockdep.c:3280 [inline] validate_chain+0x1888/0x5760 sect/v6.13-rc4/kernel/locking/lockdep.c:3904 __lock_acquire+0x13b4/0x2120 sect/v6.13-rc4/kernel/locking/lockdep.c:5226 lock_acquire+0x1c4/0x520 sect/v6.13-rc4/kernel/locking/lockdep.c:5849 touch_work_lockdep_map sect/v6.13-rc4/kernel/workqueue.c:3909 [inline] start_flush_work sect/v6.13-rc4/kernel/workqueue.c:4163 [inline] __flush_work+0x70f/0xc40 sect/v6.13-rc4/kernel/workqueue.c:4195 __cancel_work_sync sect/v6.13-rc4/kernel/workqueue.c:4351 [inline] disable_delayed_work_sync+0xbb/0xf0 sect/v6.13-rc4/kernel/workqueue.c:4514 sco_conn_free sect/v6.13-rc4/net/bluetooth/sco.c:95 [inline] kref_put sect/v6.13-rc4/./include/linux/kref.h:65 [inline] sco_conn_put+0x18f/0x270 sect/v6.13-rc4/net/bluetooth/sco.c:107 sco_chan_del+0xe2/0x210 sect/v6.13-rc4/net/bluetooth/sco.c:236 sco_sock_close+0x8f/0x100 sect/v6.13-rc4/net/bluetooth/sco.c:526 sco_sock_release+0x62/0x2d0 sect/v6.13-rc4/net/blueto ---truncated---
{
"affected": [],
"aliases": [
"CVE-2026-80666"
],
"database_specific": {
"cwe_ids": [],
"github_reviewed": false,
"github_reviewed_at": null,
"nvd_published_at": "2026-08-28T08:16:51Z",
"severity": null
},
"details": "In the Linux kernel, the following vulnerability has been resolved:\n\nBluetooth: sco: Fix a race condition in sco_sock_timeout()\n\nsco_sock_timeout() runs asynchronously and lock_sock(sk). If the socket\nis closing while the timer is running, it holds the same lock\n(lock_sock(sk)) twice, leading to a deadlock.\n\nCPU 0 CPU 1\n==================== ======================\nsco_sock_close()\n sco_sock_timeout()\nlock_sock(sk) // \u003c-- LOCK\n __sco_sock_close()\n sco_chan_del()\n sco_conn_put()\n\t sco_conn_free()\n\t disable_delayed_work_sync()\n\t lock(sk) // \u003c-- SAME LOCK\n\nFix this by moving disable_delayed_work_sync() outside of lock_sock(sk),\nensuring that no lock_sock(sk) is held before sco_sock_timeout().\n\nLockdep splat:\n\nWARNING: possible circular locking dependency detected\n6.13.0-rc4 #7 Not tainted\n\nsyz-executor292/9514 is trying to acquire lock:\nffff8881115d5070 ((work_completion)(\u0026(\u0026conn-\u003etimeout_work)-\u003ework)){+.+.}-{0:0}, at: rcu_lock_acquire sect/v6.13-rc4/./include/linux/rcupdate.h:337 [inline]\nffff8881115d5070 ((work_completion)(\u0026(\u0026conn-\u003etimeout_work)-\u003ework)){+.+.}-{0:0}, at: rcu_read_lock sect/v6.13-rc4/./include/linux/rcupdate.h:849 [inline]\nffff8881115d5070 ((work_completion)(\u0026(\u0026conn-\u003etimeout_work)-\u003ework)){+.+.}-{0:0}, at: start_flush_work sect/v6.13-rc4/kernel/workqueue.c:4137 [inline]\nffff8881115d5070 ((work_completion)(\u0026(\u0026conn-\u003etimeout_work)-\u003ework)){+.+.}-{0:0}, at: __flush_work+0xd1/0xc40 sect/v6.13-rc4/kernel/workqueue.c:4195\n\nbut task is already holding lock:\nffff88807db3a258 (sk_lock-AF_BLUETOOTH-BTPROTO_SCO){+.+.}-{0:0}, at: lock_sock sect/v6.13-rc4/./include/net/sock.h:1623 [inline]\nffff88807db3a258 (sk_lock-AF_BLUETOOTH-BTPROTO_SCO){+.+.}-{0:0}, at: sco_sock_close+0x25/0x100 sect/v6.13-rc4/net/bluetooth/sco.c:524\n\nwhich lock already depends on the new lock.\n\nthe existing dependency chain (in reverse order) is:\n\n-\u003e #1 (sk_lock-AF_BLUETOOTH-BTPROTO_SCO){+.+.}-{0:0}:\n lock_acquire+0x1c4/0x520 sect/v6.13-rc4/kernel/locking/lockdep.c:5849\n lock_sock_nested+0x48/0x130 sect/v6.13-rc4/net/core/sock.c:3622\n lock_sock sect/v6.13-rc4/./include/net/sock.h:1623 [inline]\n sco_sock_timeout+0xbe/0x270 sect/v6.13-rc4/net/bluetooth/sco.c:158\n process_one_work sect/v6.13-rc4/kernel/workqueue.c:3229 [inline]\n process_scheduled_works+0xa99/0x18f0 sect/v6.13-rc4/kernel/workqueue.c:3310\n worker_thread+0x8a9/0xd80 sect/v6.13-rc4/kernel/workqueue.c:3391\n kthread+0x2c6/0x360 sect/v6.13-rc4/kernel/kthread.c:389\n ret_from_fork+0x4e/0x80 sect/v6.13-rc4/arch/x86/kernel/process.c:147\n ret_from_fork_asm+0x1a/0x30 sect/v6.13-rc4/arch/x86/entry/entry_64.S:244\n\n-\u003e #0 ((work_completion)(\u0026(\u0026conn-\u003etimeout_work)-\u003ework)){+.+.}-{0:0}:\n check_prev_add sect/v6.13-rc4/kernel/locking/lockdep.c:3161 [inline]\n check_prevs_add sect/v6.13-rc4/kernel/locking/lockdep.c:3280 [inline]\n validate_chain+0x1888/0x5760 sect/v6.13-rc4/kernel/locking/lockdep.c:3904\n __lock_acquire+0x13b4/0x2120 sect/v6.13-rc4/kernel/locking/lockdep.c:5226\n lock_acquire+0x1c4/0x520 sect/v6.13-rc4/kernel/locking/lockdep.c:5849\n touch_work_lockdep_map sect/v6.13-rc4/kernel/workqueue.c:3909 [inline]\n start_flush_work sect/v6.13-rc4/kernel/workqueue.c:4163 [inline]\n __flush_work+0x70f/0xc40 sect/v6.13-rc4/kernel/workqueue.c:4195\n __cancel_work_sync sect/v6.13-rc4/kernel/workqueue.c:4351 [inline]\n disable_delayed_work_sync+0xbb/0xf0 sect/v6.13-rc4/kernel/workqueue.c:4514\n sco_conn_free sect/v6.13-rc4/net/bluetooth/sco.c:95 [inline]\n kref_put sect/v6.13-rc4/./include/linux/kref.h:65 [inline]\n sco_conn_put+0x18f/0x270 sect/v6.13-rc4/net/bluetooth/sco.c:107\n sco_chan_del+0xe2/0x210 sect/v6.13-rc4/net/bluetooth/sco.c:236\n sco_sock_close+0x8f/0x100 sect/v6.13-rc4/net/bluetooth/sco.c:526\n sco_sock_release+0x62/0x2d0 sect/v6.13-rc4/net/blueto\n---truncated---",
"id": "GHSA-53mq-p582-hhfx",
"modified": "2026-08-28T09:31:48Z",
"published": "2026-08-28T09:31:48Z",
"references": [
{
"type": "ADVISORY",
"url": "https://nvd.nist.gov/vuln/detail/CVE-2026-80666"
},
{
"type": "WEB",
"url": "https://git.kernel.org/stable/c/0f8a5dcc66648b6e1458a9f3ba4c5a0463a228fc"
},
{
"type": "WEB",
"url": "https://git.kernel.org/stable/c/a50da115b5888062d32c86a548a29b4e2559d7ec"
},
{
"type": "WEB",
"url": "https://git.kernel.org/stable/c/da4d8eea0c5f33ea35c0e1d9e5f3e439f3b987ce"
}
],
"schema_version": "1.4.0",
"severity": []
}
Sightings
| Author | Source | Type | Date | Other |
|---|
Nomenclature
- Seen: The vulnerability was mentioned, discussed, or observed by the user.
- Confirmed: The vulnerability has been validated from an analyst's perspective.
- Published Proof of Concept: A public proof of concept is available for this vulnerability.
- Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
- Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
- Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
- Not confirmed: The user expressed doubt about the validity of the vulnerability.
- Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.
The approach is described in our paper Mapping CVEs to MITRE ATT&CK Techniques: A Curated Gold-Set Classifier and the Limits of LLM-Assisted Label Expansion.