This fixes the recent 3c59x strangenesses.
--- 2.5.20/drivers/pci/pci-driver.c~pci-scan	Mon Jun  3 17:37:59 2002
+++ 2.5.20-akpm/drivers/pci/pci-driver.c	Mon Jun  3 17:38:03 2002
@@ -38,12 +38,19 @@ pci_match_device(const struct pci_device
 static int pci_device_probe(struct device * dev)
 {
 	int error = 0;
+	struct pci_driver *drv;
+	struct pci_dev *pci_dev;
 
-	struct pci_driver * drv = list_entry(dev->driver,struct pci_driver,driver);
-	struct pci_dev * pci_dev = list_entry(dev,struct pci_dev,dev);
+	drv = list_entry(dev->driver, struct pci_driver, driver);
+	pci_dev = list_entry(dev, struct pci_dev, dev);
 
-	if (drv->probe)
-		error = drv->probe(pci_dev,drv->id_table);
+	if (drv->probe) {
+		const struct pci_device_id *id;
+
+		id = pci_match_device(drv->id_table, pci_dev);
+		if (id)
+			error = drv->probe(pci_dev, id);
+	}
 	return error > 0 ? 0 : -ENODEV;
 }
 
-
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/