pci_scan_slot is supposed to add newly discovered devices to pci_bus->devices, but doesn't check to see if the device has already been added. This can cause problems if we ever want to use this interface to rescan the PCI bus. Signed-off-by: Alex Chiang <achiang@xxxxxx> --- drivers/pci/probe.c | 11 +++++++++++ 1 files changed, 11 insertions(+), 0 deletions(-) diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c index 55ec44a..a9e17e2 100644 --- a/drivers/pci/probe.c +++ b/drivers/pci/probe.c @@ -1035,6 +1035,17 @@ int pci_scan_slot(struct pci_bus *bus, int devfn) for (func = 0; func < 8; func++, devfn++) { struct pci_dev *dev; + dev = pci_get_slot(bus, devfn); + if (dev) { + if (dev->multifunction) { + pci_dev_put(dev); + continue; + } else { + pci_dev_put(dev); + break; + } + } + dev = pci_scan_single_device(bus, devfn); if (dev) { nr++; -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html