]> git.karo-electronics.de Git - linux-beck.git/commitdiff
arcmsr: fixes not release allocated resource
authorChing Huang <ching2048@areca.com.tw>
Wed, 25 Nov 2015 11:41:23 +0000 (19:41 +0800)
committerMartin K. Petersen <martin.petersen@oracle.com>
Mon, 30 Nov 2015 22:50:38 +0000 (17:50 -0500)
Releasing allocated resource if get configuration data failed.

Signed-off-by: Ching Huang <ching2048@areca.com.tw>
Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de>
Reviewed-by: Hannes Reinicke <hare@suse.de>
Reviewed-by: Tomas Henzl <thenzl@redhat.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/arcmsr/arcmsr_hba.c

index 397cdd52fbfed4cac42c6982dc65bea2e115ef11..41f9a00e4f74ff16a3301617d10f2d62ec820573 100644 (file)
@@ -2664,7 +2664,7 @@ static bool arcmsr_hbaB_get_config(struct AdapterControlBlock *acb)
        if (!arcmsr_hbaB_wait_msgint_ready(acb)) {
                printk(KERN_NOTICE "arcmsr%d: wait 'get adapter firmware \
                        miscellaneous data' timeout \n", acb->host->host_no);
-               return false;
+               goto err_free_dma;
        }
        count = 8;
        while (count){
@@ -2707,6 +2707,10 @@ static bool arcmsr_hbaB_get_config(struct AdapterControlBlock *acb)
        acb->firm_cfg_version = readl(&reg->message_rwbuffer[25]);  /*firm_cfg_version,25,100-103*/
        /*firm_ide_channels,4,16-19*/
        return true;
+err_free_dma:
+       dma_free_coherent(&acb->pdev->dev, acb->roundup_ccbsize,
+                       acb->dma_coherent2, acb->dma_coherent_handle2);
+       return false;
 }
 
 static bool arcmsr_hbaC_get_config(struct AdapterControlBlock *pACB)