CVE-2022-49446
Severity CVSS v4.0:
Pending analysis
Type:
Unavailable / Other
Publication date:
26/02/2025
Last modified:
01/10/2025
Description
In the Linux kernel, the following vulnerability has been resolved:<br />
<br />
nvdimm: Fix firmware activation deadlock scenarios<br />
<br />
Lockdep reports the following deadlock scenarios for CXL root device<br />
power-management, device_prepare(), operations, and device_shutdown()<br />
operations for &#39;nd_region&#39; devices:<br />
<br />
Chain exists of:<br />
&nvdimm_region_key --> &nvdimm_bus->reconfig_mutex --> system_transition_mutex<br />
<br />
Possible unsafe locking scenario:<br />
<br />
CPU0 CPU1<br />
---- ----<br />
lock(system_transition_mutex);<br />
lock(&nvdimm_bus->reconfig_mutex);<br />
lock(system_transition_mutex);<br />
lock(&nvdimm_region_key);<br />
<br />
Chain exists of:<br />
&cxl_nvdimm_bridge_key --> acpi_scan_lock --> &cxl_root_key<br />
<br />
Possible unsafe locking scenario:<br />
<br />
CPU0 CPU1<br />
---- ----<br />
lock(&cxl_root_key);<br />
lock(acpi_scan_lock);<br />
lock(&cxl_root_key);<br />
lock(&cxl_nvdimm_bridge_key);<br />
<br />
These stem from holding nvdimm_bus_lock() over hibernate_quiet_exec()<br />
which walks the entire system device topology taking device_lock() along<br />
the way. The nvdimm_bus_lock() is protecting against unregistration,<br />
multiple simultaneous ops callers, and preventing activate_show() from<br />
racing activate_store(). For the first 2, the lock is redundant.<br />
Unregistration already flushes all ops users, and sysfs already prevents<br />
multiple threads to be active in an ops handler at the same time. For<br />
the last userspace should already be waiting for its last<br />
activate_store() to complete, and does not need activate_show() to flush<br />
the write side, so this lock usage can be deleted in these attributes.
Impact
Base Score 3.x
5.50
Severity 3.x
MEDIUM
Vulnerable products and versions
| CPE | From | Up to |
|---|---|---|
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.9 (including) | 5.10.121 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.11 (including) | 5.15.46 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.16 (including) | 5.17.14 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.18 (including) | 5.18.3 (excluding) |
To consult the complete list of CPE names with products and versions, see this page
References to Advisories, Solutions, and Tools
- https://git.kernel.org/stable/c/2f97ebc58d5fc83ca1528cd553fa725472ab3ca8
- https://git.kernel.org/stable/c/2fd853fdb40afc052de338693df1372f2ead7be7
- https://git.kernel.org/stable/c/641649f31e20df630310f5c22f26c071acc676d4
- https://git.kernel.org/stable/c/ceb924ee16b2c8e48dcac3d9ad6be01c40b5a228
- https://git.kernel.org/stable/c/e6829d1bd3c4b58296ee9e412f7ed4d6cb390192



