CVE-2025-38720
Severity CVSS v4.0:
Pending analysis
Type:
Unavailable / Other
Publication date:
04/09/2025
Last modified:
05/09/2025
Description
In the Linux kernel, the following vulnerability has been resolved:<br />
<br />
net: hibmcge: fix rtnl deadlock issue<br />
<br />
Currently, the hibmcge netdev acquires the rtnl_lock in<br />
pci_error_handlers.reset_prepare() and releases it in<br />
pci_error_handlers.reset_done().<br />
<br />
However, in the PCI framework:<br />
pci_reset_bus - __pci_reset_slot - pci_slot_save_and_disable_locked -<br />
pci_dev_save_and_disable - err_handler->reset_prepare(dev);<br />
<br />
In pci_slot_save_and_disable_locked():<br />
list_for_each_entry(dev, &slot->bus->devices, bus_list) {<br />
if (!dev->slot || dev->slot!= slot)<br />
continue;<br />
pci_dev_save_and_disable(dev);<br />
if (dev->subordinate)<br />
pci_bus_save_and_disable_locked(dev->subordinate);<br />
}<br />
<br />
This will iterate through all devices under the current bus and execute<br />
err_handler->reset_prepare(), causing two devices of the hibmcge driver<br />
to sequentially request the rtnl_lock, leading to a deadlock.<br />
<br />
Since the driver now executes netif_device_detach()<br />
before the reset process, it will not concurrently with<br />
other netdev APIs, so there is no need to hold the rtnl_lock now.<br />
<br />
Therefore, this patch removes the rtnl_lock during the reset process and<br />
adjusts the position of HBG_NIC_STATE_RESETTING to ensure<br />
that multiple resets are not executed concurrently.