summaryrefslogtreecommitdiffstats
path: root/drivers/scsi
diff options
context:
space:
mode:
authorRobert Elliott <elliott@hp.com>2015-01-23 16:42:54 -0600
committerJames Bottomley <JBottomley@Parallels.com>2015-02-02 09:57:39 -0800
commit8947fd10865db321205faa0e4123d165aff0781c (patch)
treeafa72496bef8eff00f52d03526348fe8e920991e /drivers/scsi
parent2c14334278a614f5573a219d309bc7582ffdd126 (diff)
downloadlinux-8947fd10865db321205faa0e4123d165aff0781c.tar.gz
linux-8947fd10865db321205faa0e4123d165aff0781c.tar.bz2
linux-8947fd10865db321205faa0e4123d165aff0781c.zip
hpsa: avoid unneccesary calls to resource freeing functions
If hpsa_allocate_cmd_pool failed, we were calling two functions unnecessarily: hpsa_free_sg_chain_blocks(h); hpsa_free_cmd_pool(h); This didn't cause any problem, as those functions can tolerate being called when what they free hasn't been allocated (relevant pointers would be NULL) but it is potentially confusing. Reviewed-by: Scott Teel <scott.teel@pmcs.com> Signed-off-by: Robert Elliott <elliott@hp.com> Signed-off-by: Don Brace <don.brace@pmcs.com> Signed-off-by: Christoph Hellwig <hch@lst.de>
Diffstat (limited to 'drivers/scsi')
-rw-r--r--drivers/scsi/hpsa.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/scsi/hpsa.c b/drivers/scsi/hpsa.c
index a66a50ec3a85..bee24b21c1c4 100644
--- a/drivers/scsi/hpsa.c
+++ b/drivers/scsi/hpsa.c
@@ -6948,8 +6948,9 @@ reinit_after_soft_reset:
dev_info(&pdev->dev, "%s: <0x%x> at IRQ %d%s using DAC\n",
h->devname, pdev->device,
h->intr[h->intr_mode], dac ? "" : " not");
- if (hpsa_allocate_cmd_pool(h))
- goto clean4;
+ rc = hpsa_allocate_cmd_pool(h);
+ if (rc)
+ goto clean2_and_free_irqs;
if (hpsa_allocate_sg_chain_blocks(h))
goto clean4;
init_waitqueue_head(&h->scan_wait_queue);
@@ -7038,6 +7039,7 @@ reinit_after_soft_reset:
clean4:
hpsa_free_sg_chain_blocks(h);
hpsa_free_cmd_pool(h);
+clean2_and_free_irqs:
hpsa_free_irqs(h);
clean2:
clean1: