Parcourir la source

tehuti: possible leak in bdx_probe

If pci_enable_device fails, bdx_probe returns without freeing the
allocated pci_nic structure.

Coverity CID 1908.

Signed-off-by: Florin Malita <fmalita@gmail.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
Florin Malita il y a 17 ans
Parent
commit
bc2618f752
1 fichiers modifiés avec 2 ajouts et 1 suppressions
  1. 2 1
      drivers/net/tehuti.c

+ 2 - 1
drivers/net/tehuti.c

@@ -1906,7 +1906,7 @@ bdx_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
 
 
     /************** pci *****************/
     /************** pci *****************/
 	if ((err = pci_enable_device(pdev)))	/* it trigers interrupt, dunno why. */
 	if ((err = pci_enable_device(pdev)))	/* it trigers interrupt, dunno why. */
-		RET(err);			/* it's not a problem though */
+		goto err_pci;			/* it's not a problem though */
 
 
 	if (!(err = pci_set_dma_mask(pdev, DMA_64BIT_MASK)) &&
 	if (!(err = pci_set_dma_mask(pdev, DMA_64BIT_MASK)) &&
 	    !(err = pci_set_consistent_dma_mask(pdev, DMA_64BIT_MASK))) {
 	    !(err = pci_set_consistent_dma_mask(pdev, DMA_64BIT_MASK))) {
@@ -2076,6 +2076,7 @@ err_out_res:
 	pci_release_regions(pdev);
 	pci_release_regions(pdev);
 err_dma:
 err_dma:
 	pci_disable_device(pdev);
 	pci_disable_device(pdev);
+err_pci:
 	vfree(nic);
 	vfree(nic);
 
 
 	RET(err);
 	RET(err);