staging: crystalhd: fix memory leaks

Free resources before exit.

Signed-off-by: Alexander Beregalov <a.beregalov@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
Alexander Beregalov 2011-03-13 21:58:48 +03:00 коммит произвёл Greg Kroah-Hartman
Родитель 819d4eb116
Коммит b4c7784860
2 изменённых файлов: 14 добавлений и 5 удалений

Просмотреть файл

@ -1965,6 +1965,7 @@ enum BC_STATUS crystalhd_hw_setup_dma_rings(struct crystalhd_hw *hw)
} else {
BCMLOG_ERR("Insufficient Memory For RX\n");
crystalhd_hw_free_dma_rings(hw);
kfree(rpkt);
return BC_STS_INSUFF_RES;
}
rpkt->desc_mem.pdma_desc_start = mem;

Просмотреть файл

@ -559,7 +559,7 @@ static int __devinit chd_dec_pci_probe(struct pci_dev *pdev,
rc = pci_enable_device(pdev);
if (rc) {
BCMLOG_ERR("Failed to enable PCI device\n");
return rc;
goto err;
}
snprintf(pinfo->name, sizeof(pinfo->name), "crystalhd_pci_e:%d:%d:%d",
@ -570,7 +570,8 @@ static int __devinit chd_dec_pci_probe(struct pci_dev *pdev,
if (rc) {
BCMLOG_ERR("Failed to setup memory regions.\n");
pci_disable_device(pdev);
return -ENOMEM;
rc = -ENOMEM;
goto err;
}
pinfo->present = 1;
@ -585,7 +586,8 @@ static int __devinit chd_dec_pci_probe(struct pci_dev *pdev,
if (rc) {
BCMLOG_ERR("_enable_int err:%d\n", rc);
pci_disable_device(pdev);
return -ENODEV;
rc = -ENODEV;
goto err;
}
/* Set dma mask... */
@ -598,14 +600,16 @@ static int __devinit chd_dec_pci_probe(struct pci_dev *pdev,
} else {
BCMLOG_ERR("Unabled to setup DMA %d\n", rc);
pci_disable_device(pdev);
return -ENODEV;
rc = -ENODEV;
goto err;
}
sts = crystalhd_setup_cmd_context(&pinfo->cmds, pinfo);
if (sts != BC_STS_SUCCESS) {
BCMLOG_ERR("cmd setup :%d\n", sts);
pci_disable_device(pdev);
return -ENODEV;
rc = -ENODEV;
goto err;
}
pci_set_master(pdev);
@ -615,6 +619,10 @@ static int __devinit chd_dec_pci_probe(struct pci_dev *pdev,
g_adp_info = pinfo;
return 0;
err:
kfree(pinfo);
return rc;
}
#ifdef CONFIG_PM