Merge branch 'pci/dpc'
- If there's a device below a bridge, prevent a use-after-free by holding a reference to the device while waiting for the secondary bus to be ready in case the device is concurrently removed, e.g., by DPC (Lukas Wunner) * pci/dpc: PCI/DPC: Fix use-after-free on concurrent DPC and hot-removal
This commit is contained in:
commit
147ea50e1e
@ -4823,7 +4823,7 @@ static int pci_bus_max_d3cold_delay(const struct pci_bus *bus)
|
||||
*/
|
||||
int pci_bridge_wait_for_secondary_bus(struct pci_dev *dev, char *reset_type)
|
||||
{
|
||||
struct pci_dev *child;
|
||||
struct pci_dev *child __free(pci_dev_put) = NULL;
|
||||
int delay;
|
||||
|
||||
if (pci_dev_is_disconnected(dev))
|
||||
@ -4852,8 +4852,8 @@ int pci_bridge_wait_for_secondary_bus(struct pci_dev *dev, char *reset_type)
|
||||
return 0;
|
||||
}
|
||||
|
||||
child = list_first_entry(&dev->subordinate->devices, struct pci_dev,
|
||||
bus_list);
|
||||
child = pci_dev_get(list_first_entry(&dev->subordinate->devices,
|
||||
struct pci_dev, bus_list));
|
||||
up_read(&pci_bus_sem);
|
||||
|
||||
/*
|
||||
|
Loading…
Reference in New Issue
Block a user