[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <SN6PR11MB2848C63D9D1A86AE45EF0975E1160@SN6PR11MB2848.namprd11.prod.outlook.com>
Date: Tue, 27 Oct 2020 15:27:04 +0000
From: <Don.Brace@...rochip.com>
To: <keitasuzuki.park@...ab.ics.keio.ac.jp>
CC: <takafumi@...ab.ics.keio.ac.jp>, <don.brace@...rosemi.com>,
<jejb@...ux.ibm.com>, <martin.petersen@...cle.com>,
<esc.storagedev@...rosemi.com>, <linux-scsi@...r.kernel.org>,
<linux-kernel@...r.kernel.org>
Subject: RE: [PATCH v3] scsi: hpsa: fix memory leak in hpsa_init_one
-----Original Message-----
From: Keita Suzuki [mailto:keitasuzuki.park@...ab.ics.keio.ac.jp]
Sent: Tuesday, October 27, 2020 2:31 AM
Cc: keitasuzuki.park@...ab.ics.keio.ac.jp; takafumi@...ab.ics.keio.ac.jp; Don Brace <don.brace@...rosemi.com>; James E.J. Bottomley <jejb@...ux.ibm.com>; Martin K. Petersen <martin.petersen@...cle.com>; esc.storagedev@...rosemi.com; linux-scsi@...r.kernel.org; linux-kernel@...r.kernel.org
Subject: [PATCH v3] scsi: hpsa: fix memory leak in hpsa_init_one
EXTERNAL EMAIL: Do not click links or open attachments unless you know the content is safe
When hpsa_scsi_add_host fails, h->lastlogicals is leaked since it lacks free in the error handler.
Fix this by adding free when hpsa_scsi_add_host fails.
Signed-off-by: Keita Suzuki <keitasuzuki.park@...ab.ics.keio.ac.jp>
Acked-by: Don Brace <don.brace@...rochip.com>
Tested-by: Don Brace <don.brace@...rochip.com>
---
v3: revert label name to numbered labels
v2: rename labels
drivers/scsi/hpsa.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/drivers/scsi/hpsa.c b/drivers/scsi/hpsa.c index 48d5da59262b..aed59ec20ad9 100644
--- a/drivers/scsi/hpsa.c
+++ b/drivers/scsi/hpsa.c
@@ -8854,7 +8854,7 @@ static int hpsa_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
/* hook into SCSI subsystem */
rc = hpsa_scsi_add_host(h);
if (rc)
- goto clean7; /* perf, sg, cmd, irq, shost, pci, lu, aer/h */
+ goto clean8; /* lastlogicals, perf, sg, cmd, irq, shost,
+ pci, lu, aer/h */
/* Monitor the controller for firmware lockups */
h->heartbeat_sample_interval = HEARTBEAT_SAMPLE_INTERVAL; @@ -8869,6 +8869,8 @@ static int hpsa_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
HPSA_EVENT_MONITOR_INTERVAL);
return 0;
+clean8: /* lastlogicals, perf, sg, cmd, irq, shost, pci, lu, aer/h */
+ kfree(h->lastlogicals);
clean7: /* perf, sg, cmd, irq, shost, pci, lu, aer/h */
hpsa_free_performant_mode(h);
h->access.set_intr_mask(h, HPSA_INTR_OFF);
--
2.17.1
Powered by blists - more mailing lists