diff --git a/drivers/ide/pci/cs5530.c b/drivers/ide/pci/cs5530.c --- a/drivers/ide/pci/cs5530.c +++ b/drivers/ide/pci/cs5530.c @@ -223,7 +223,7 @@ static unsigned int __devinit init_chips unsigned long flags; dev = NULL; - while ((dev = pci_find_device(PCI_VENDOR_ID_CYRIX, PCI_ANY_ID, dev)) != NULL) { + while ((dev = pci_get_device(PCI_VENDOR_ID_CYRIX, PCI_ANY_ID, dev)) != NULL) { switch (dev->device) { case PCI_DEVICE_ID_CYRIX_PCI_MASTER: master_0 = dev; @@ -235,10 +235,12 @@ static unsigned int __devinit init_chips } if (!master_0) { printk(KERN_ERR "%s: unable to locate PCI MASTER function\n", name); + pci_dev_put(cs5530_0); return 0; } if (!cs5530_0) { printk(KERN_ERR "%s: unable to locate CS5530 LEGACY function\n", name); + pci_dev_put(master_0); return 0; } @@ -297,6 +299,9 @@ static unsigned int __devinit init_chips spin_unlock_irqrestore(&ide_lock, flags); + pci_dev_put(master_0); + pci_dev_put(cs5530_0); + return 0; }