hc
2024-02-20 102a0743326a03cd1a1202ceda21e175b7d3575c
kernel/drivers/pci/hotplug/pciehp_pci.c
....@@ -63,7 +63,14 @@
6363
6464 pci_assign_unassigned_bridge_resources(bridge);
6565 pcie_bus_configure_settings(parent);
66
+
67
+ /*
68
+ * Release reset_lock during driver binding
69
+ * to avoid AB-BA deadlock with device_lock.
70
+ */
71
+ up_read(&ctrl->reset_lock);
6672 pci_bus_add_devices(parent);
73
+ down_read_nested(&ctrl->reset_lock, ctrl->depth);
6774
6875 out:
6976 pci_unlock_rescan_remove();
....@@ -104,7 +111,15 @@
104111 list_for_each_entry_safe_reverse(dev, temp, &parent->devices,
105112 bus_list) {
106113 pci_dev_get(dev);
114
+
115
+ /*
116
+ * Release reset_lock during driver unbinding
117
+ * to avoid AB-BA deadlock with device_lock.
118
+ */
119
+ up_read(&ctrl->reset_lock);
107120 pci_stop_and_remove_bus_device(dev);
121
+ down_read_nested(&ctrl->reset_lock, ctrl->depth);
122
+
108123 /*
109124 * Ensure that no new Requests will be generated from
110125 * the device.