netlink: fix potential deadlock in netlink_set_err()
- Published
- Last modified
- Where the record stands: published, rejected by its publisher, or superseded by another id.What do these mean? →
- published
- Whether CISA lists it in its Known Exploited Vulnerabilities catalog: proof that attackers are using it.What do these mean? →
- Not listed in CISA KEV
- Fix
- Fixed in 4.14.322, 4.19.291, 5.4.251, 5.10.188, 4.5, and 2 more
- Whether working attack code is public (Exploit-DB, Metasploit, Nuclei or GitHub). Public code makes attacks easier.What do these mean? →
- None on Exploit-DB, Metasploit or GitHub
Summary
In the Linux kernel, the following vulnerability has been resolved: netlink: fix potential deadlock in netlink_set_err() syzbot reported a possible deadlock in netlink_set_err() [1] A similar issue was fixed in commit 1d482e666b8e ("netlink: disable IRQs for netlink_lock_table()") in netlink_lock_table() This patch adds IRQ safety to netlink_set_err() and __netlink_diag_dump() which were not covered by cited commit. [1] WARNING: possible irq lock inversion dependency detected 6.4.0-rc6-syzkaller-00240-g4e9f0ec38852 #0 Not tainted syz-executor.2/23011 just changed the state of lock: ffffffff8e1a7a58 (nl_table_lock){.+.?}-{2:2}, at: netlink_set_err+0x2e/0x3a0 net/netlink/af_netlink.c:1612 but this lock was taken by another, SOFTIRQ-safe lock in the past: (&local->queue_stop_reason_lock){..-.}-{2:2} and interrupts could create inverse lock ordering between them. other info that might help us debug this: Possible interrupt unsafe locking scenario: CPU0 CPU1 ---- ---- lock(nl_table_lock); local_irq_disable(); lock(&local->queue_stop_reason_lock); lock(nl_table_lock); <Interrupt> lock(&local->queue_stop_reason_lock); *** DEADLOCK ***
Timeline
- CVE published
- Record last updated
Affected versions
- Linux Linux
From 4.14.237 · fixed in 4.14.322; From 4.19.195 · fixed in 4.19.291; From 5.4.126 · fixed in 5.4.251; From 5.10.44 · fixed in 5.10.188; From 4.4.273 · fixed in 4.5; From 4.9.273 · fixed in 4.10; From 5.12.11 · fixed in 5.13
- Linux Linux
5.13
References 9
git.kernel.org
- stable/c/c09e8e3f7fd432984bf5422302b093d2371dfc48
- stable/c/4b9adb8d4a62ff7608d4a7d4eb42036a88f30980
- stable/c/8f6652ed2ad98fe6d13b903483d9257762ab2ec6
- stable/c/cde7b90e0539a3b11da377e463dfd2288a162dbf
- stable/c/a641240b7e071c5538dc0e7894ece833fce459dd
- stable/c/61ffe8b1ee084e5c82a4e4bbf9e7b68e0c06e464
- stable/c/eb8e27c8fa9397b4a7b181c48fa58157dbe9902e
- stable/c/1556ba034b95cfd4f75ea93c1a2679ae0444bba1
- stable/c/8d61f926d42045961e6b65191c09e3678d86a9cf