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.
[
{
"product": "Linux",
"vendor": "Linux",
"defaultStatus": "unaffected",
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"programFiles": [
"drivers/pinctrl/core.c"
],
"versions": [
{
"version": "42fed7ba44e4",
"lessThan": "e65a0dc2e85e",
"status": "affected",
"versionType": "git"
},
{
"version": "42fed7ba44e4",
"lessThan": "420ce1261907",
"status": "affected",
"versionType": "git"
},
{
"version": "42fed7ba44e4",
"lessThan": "b813e3fd102a",
"status": "affected",
"versionType": "git"
},
{
"version": "42fed7ba44e4",
"lessThan": "01fe2f885f78",
"status": "affected",
"versionType": "git"
},
{
"version": "42fed7ba44e4",
"lessThan": "b36efd2e3e22",
"status": "affected",
"versionType": "git"
},
{
"version": "42fed7ba44e4",
"lessThan": "4038c57bf616",
"status": "affected",
"versionType": "git"
},
{
"version": "42fed7ba44e4",
"lessThan": "48a7a7c9571c",
"status": "affected",
"versionType": "git"
},
{
"version": "42fed7ba44e4",
"lessThan": "adec57ff8e66",
"status": "affected",
"versionType": "git"
}
]
},
{
"product": "Linux",
"vendor": "Linux",
"defaultStatus": "affected",
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"programFiles": [
"drivers/pinctrl/core.c"
],
"versions": [
{
"version": "3.10",
"status": "affected"
},
{
"version": "0",
"lessThan": "3.10",
"status": "unaffected",
"versionType": "custom"
},
{
"version": "4.19.317",
"lessThanOrEqual": "4.19.*",
"status": "unaffected",
"versionType": "custom"
},
{
"version": "5.4.279",
"lessThanOrEqual": "5.4.*",
"status": "unaffected",
"versionType": "custom"
},
{
"version": "5.10.221",
"lessThanOrEqual": "5.10.*",
"status": "unaffected",
"versionType": "custom"
},
{
"version": "5.15.162",
"lessThanOrEqual": "5.15.*",
"status": "unaffected",
"versionType": "custom"
},
{
"version": "6.1.97",
"lessThanOrEqual": "6.1.*",
"status": "unaffected",
"versionType": "custom"
},
{
"version": "6.6.37",
"lessThanOrEqual": "6.6.*",
"status": "unaffected",
"versionType": "custom"
},
{
"version": "6.9.8",
"lessThanOrEqual": "6.9.*",
"status": "unaffected",
"versionType": "custom"
},
{
"version": "6.10",
"lessThanOrEqual": "*",
"status": "unaffected",
"versionType": "original_commit_for_fix"
}
]
}
]
git.kernel.org/stable/c/01fe2f885f7813f8aed5d3704b384a97b1116a9e
git.kernel.org/stable/c/4038c57bf61631219b31f1bd6e92106ec7f084dc
git.kernel.org/stable/c/420ce1261907e5dbeda1e4daffd5b6c76f8188c0
git.kernel.org/stable/c/48a7a7c9571c3e62f17012dd7f2063e926179ddd
git.kernel.org/stable/c/adec57ff8e66aee632f3dd1f93787c13d112b7a1
git.kernel.org/stable/c/b36efd2e3e22a329444b6b24fa48df6d20ae66e6
git.kernel.org/stable/c/b813e3fd102a959c5b208ed68afe27e0137a561b
git.kernel.org/stable/c/e65a0dc2e85efb28e182aca50218e8a056d0ce04