pinctrl: fix deadlock in create_pinctrl() when handling -EPROBE_DEFER
- 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.19.317, 5.4.279, 5.10.221, 5.15.162, 6.1.97, 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
- Exploitation: none
- Automatable: no
- Technical impact: partial
Summary
In the Linux kernel, the following vulnerability has been resolved: pinctrl: fix deadlock in create_pinctrl() when handling -EPROBE_DEFER In create_pinctrl(), pinctrl_maps_mutex is acquired before calling add_setting(). If add_setting() returns -EPROBE_DEFER, create_pinctrl() calls pinctrl_free(). However, pinctrl_free() attempts to acquire pinctrl_maps_mutex, which is already held by create_pinctrl(), leading to a potential deadlock. This patch resolves the issue by releasing pinctrl_maps_mutex before calling pinctrl_free(), preventing the deadlock. This bug was discovered and resolved using Coverity Static Analysis Security Testing (SAST) by Synopsys, Inc.
Timeline
- CVE published
- CISA SSVC assessment
Exploitation: none · Automatable: no · Technical impact: partial
- Record last updated
Affected versions
- Linux Linux
From 42fed7ba44e4e8c1fb27b28ad14490cb1daff3c7 · fixed in e65a0dc2e85efb28e182aca50218e8a056d0ce04; From 42fed7ba44e4e8c1fb27b28ad14490cb1daff3c7 · fixed in 420ce1261907e5dbeda1e4daffd5b6c76f8188c0; From 42fed7ba44e4e8c1fb27b28ad14490cb1daff3c7 · fixed in b813e3fd102a959c5b208ed68afe27e0137a561b; From 42fed7ba44e4e8c1fb27b28ad14490cb1daff3c7 · fixed in 01fe2f885f7813f8aed5d3704b384a97b1116a9e; From 42fed7ba44e4e8c1fb27b28ad14490cb1daff3c7 · fixed in b36efd2e3e22a329444b6b24fa48df6d20ae66e6; From 42fed7ba44e4e8c1fb27b28ad14490cb1daff3c7 · fixed in 4038c57bf61631219b31f1bd6e92106ec7f084dc; From 42fed7ba44e4e8c1fb27b28ad14490cb1daff3c7 · fixed in 48a7a7c9571c3e62f17012dd7f2063e926179ddd; From 42fed7ba44e4e8c1fb27b28ad14490cb1daff3c7 · fixed in adec57ff8e66aee632f3dd1f93787c13d112b7a1
- Linux Linux
3.10
- KernelLinux
From 3.10.0 · fixed in 4.19.317; From 4.20.0 · fixed in 5.4.279; From 5.5.0 · fixed in 5.10.221; From 5.11.0 · fixed in 5.15.162; From 5.16.0 · fixed in 6.1.97; From 6.2.0 · fixed in 6.6.37; From 6.7.0 · fixed in 6.9.8
References 8
git.kernel.org
- stable/c/e65a0dc2e85efb28e182aca50218e8a056d0ce04
- stable/c/420ce1261907e5dbeda1e4daffd5b6c76f8188c0
- stable/c/b813e3fd102a959c5b208ed68afe27e0137a561b
- stable/c/01fe2f885f7813f8aed5d3704b384a97b1116a9e
- stable/c/b36efd2e3e22a329444b6b24fa48df6d20ae66e6
- stable/c/4038c57bf61631219b31f1bd6e92106ec7f084dc
- stable/c/48a7a7c9571c3e62f17012dd7f2063e926179ddd
- stable/c/adec57ff8e66aee632f3dd1f93787c13d112b7a1