diff --git a/drivers/isdn/hisax/hfc_pci.c b/drivers/isdn/hisax/hfc_pci.c --- a/drivers/isdn/hisax/hfc_pci.c +++ b/drivers/isdn/hisax/hfc_pci.c @@ -1661,16 +1661,22 @@ setup_hfcpci(struct IsdnCard *card) if (cs->typ == ISDN_CTYPE_HFC_PCI) { i = 0; while (id_list[i].vendor_id) { - tmp_hfcpci = pci_find_device(id_list[i].vendor_id, + tmp_hfcpci = pci_get_device(id_list[i].vendor_id, id_list[i].device_id, dev_hfcpci); i++; if (tmp_hfcpci) { - if (pci_enable_device(tmp_hfcpci)) + if (pci_enable_device(tmp_hfcpci)) { + pci_dev_put(tmp_hfcpci); +/* XXX shouldn't be here dev_hfcpci=tmp_hfcpci; for pci_get_device's 3rd param + instead of dev_put? */ continue; + } pci_set_master(tmp_hfcpci); - if ((card->para[0]) && (card->para[0] != (tmp_hfcpci->resource[ 0].start & PCI_BASE_ADDRESS_IO_MASK))) + if ((card->para[0]) && (card->para[0] != (tmp_hfcpci->resource[ 0].start & PCI_BASE_ADDRESS_IO_MASK))) { + pci_dev_put(tmp_hfcpci); continue; + } else break; }