PCIe: AER: during disable, check subordinate before walking
Commit 47a8b0cc (Enable PCIe AER only after checking firmware support) wants to walk the PCI bus in the remove path to disable AER, and calls pci_walk_bus for downstream bridges. Unfortunately, in the remove path, we remove devices and bridges in a depth-first manner, starting with the furthest downstream bridge and working our way backwards. The furthest downstream bridges will not have a dev->subordinate, and we hit a NULL deref in pci_walk_bus. Check for dev->subordinate first before attempting to walk the PCI hierarchy below us. Acked-by: Andrew Patterson <andrew.patterson@hp.com> Signed-off-by: Alex Chiang <achiang@hp.com> Signed-off-by: Matthew Wilcox <willy@linux.intel.com>
This commit is contained in:
parent
649426efcf
commit
cb4cb4ac73
|
@ -133,6 +133,9 @@ static void set_downstream_devices_error_reporting(struct pci_dev *dev,
|
|||
bool enable)
|
||||
{
|
||||
set_device_error_reporting(dev, &enable);
|
||||
|
||||
if (!dev->subordinate)
|
||||
return;
|
||||
pci_walk_bus(dev->subordinate, set_device_error_reporting, &enable);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue