mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-20 19:23:57 +08:00
isdn: mISDN: call pci_disable_device() if pci_probe() failed
Driver should call pci_disable_device() if it returns from pci_probe() with error. Signed-off-by: Kulikov Vasiliy <segooon@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
a5a4405b4d
commit
06d88e4a88
@ -1094,6 +1094,7 @@ inf_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
|
|||||||
pr_info("mISDN: do not have informations about adapter at %s\n",
|
pr_info("mISDN: do not have informations about adapter at %s\n",
|
||||||
pci_name(pdev));
|
pci_name(pdev));
|
||||||
kfree(card);
|
kfree(card);
|
||||||
|
pci_disable_device(pdev);
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
} else
|
} else
|
||||||
pr_notice("mISDN: found adapter %s at %s\n",
|
pr_notice("mISDN: found adapter %s at %s\n",
|
||||||
@ -1103,7 +1104,7 @@ inf_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
|
|||||||
pci_set_drvdata(pdev, card);
|
pci_set_drvdata(pdev, card);
|
||||||
err = setup_instance(card);
|
err = setup_instance(card);
|
||||||
if (err) {
|
if (err) {
|
||||||
pci_disable_device(card->pdev);
|
pci_disable_device(pdev);
|
||||||
kfree(card);
|
kfree(card);
|
||||||
pci_set_drvdata(pdev, NULL);
|
pci_set_drvdata(pdev, NULL);
|
||||||
} else if (ent->driver_data == INF_SCT_1) {
|
} else if (ent->driver_data == INF_SCT_1) {
|
||||||
@ -1114,6 +1115,7 @@ inf_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
|
|||||||
sc = kzalloc(sizeof(struct inf_hw), GFP_KERNEL);
|
sc = kzalloc(sizeof(struct inf_hw), GFP_KERNEL);
|
||||||
if (!sc) {
|
if (!sc) {
|
||||||
release_card(card);
|
release_card(card);
|
||||||
|
pci_disable_device(pdev);
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
}
|
}
|
||||||
sc->irq = card->irq;
|
sc->irq = card->irq;
|
||||||
@ -1121,6 +1123,7 @@ inf_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
|
|||||||
sc->ci = card->ci + i;
|
sc->ci = card->ci + i;
|
||||||
err = setup_instance(sc);
|
err = setup_instance(sc);
|
||||||
if (err) {
|
if (err) {
|
||||||
|
pci_disable_device(pdev);
|
||||||
kfree(sc);
|
kfree(sc);
|
||||||
release_card(card);
|
release_card(card);
|
||||||
break;
|
break;
|
||||||
|
Loading…
Reference in New Issue
Block a user