From: Bjorn Helgaas Don't look at pci_resource_start() before pci_enable_device(). Signed-off-by: Bjorn Helgaas Signed-off-by: Andrew Morton --- 25-akpm/drivers/net/hp100.c | 17 +++++++++-------- 1 files changed, 9 insertions(+), 8 deletions(-) diff -puN drivers/net/hp100.c~fix-hp100c-for-pci_enable_device-changes drivers/net/hp100.c --- 25/drivers/net/hp100.c~fix-hp100c-for-pci_enable_device-changes 2004-08-25 19:17:18.982486272 -0700 +++ 25-akpm/drivers/net/hp100.c 2004-08-25 19:17:18.987485512 -0700 @@ -2906,16 +2906,17 @@ static struct eisa_driver hp100_eisa_dri static int __devinit hp100_pci_probe (struct pci_dev *pdev, const struct pci_device_id *ent) { - struct net_device *dev = alloc_etherdev(sizeof(struct hp100_private)); - int ioaddr = pci_resource_start(pdev, 0); + struct net_device *dev; + int ioaddr; u_short pci_command; int err; - if (!dev) - return -ENOMEM; + if (pci_enable_device(pdev)) + return -ENODEV; - if (pci_enable_device(pdev)) { - err = -ENODEV; + dev = alloc_etherdev(sizeof(struct hp100_private)); + if (!dev) { + err = -ENOMEM; goto out0; } @@ -2939,7 +2940,7 @@ static int __devinit hp100_pci_probe (st pci_write_config_word(pdev, PCI_COMMAND, pci_command); } - + ioaddr = pci_resource_start(pdev, 0); err = hp100_probe1(dev, ioaddr, HP100_BUS_PCI, pdev); if (err) goto out1; @@ -2956,8 +2957,8 @@ static int __devinit hp100_pci_probe (st release_region(dev->base_addr, HP100_REGION_SIZE); out1: free_netdev(dev); - pci_disable_device(pdev); out0: + pci_disable_device(pdev); return err; } _