25-akpm/drivers/pci/probe.c |   11 +++++++----
 1 files changed, 7 insertions(+), 4 deletions(-)

diff -puN drivers/pci/probe.c~pci-6 drivers/pci/probe.c
--- 25/drivers/pci/probe.c~pci-6	Thu Mar 13 15:48:53 2003
+++ 25-akpm/drivers/pci/probe.c	Thu Mar 13 15:48:53 2003
@@ -520,11 +520,14 @@ int __devinit pci_scan_slot(struct pci_b
 		struct pci_dev *dev;
 
 		dev = pci_scan_device(bus, devfn);
-		if (!dev)
-			continue;
-
-		if (func != 0)
+		if (func == 0) {
+			if (!dev)
+				break;
+		} else {
+			if (!dev)
+				continue;
 			dev->multifunction = 1;
+		}
 
 		/* Fix up broken headers */
 		pci_fixup_device(PCI_FIXUP_HEADER, dev);

_