summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBart Van Assche <bart.vanassche@sandisk.com>2017-01-23 17:34:45 +0100
committerMartin K. Petersen <martin.petersen@oracle.com>2017-01-24 23:20:31 +0100
commit27873de99f2fecca0f6b257316489ef2a1d86ffd (patch)
tree2b027c16a093f251498197be0f50a4fab22d461a
parentscsi: virtio_scsi: Reject commands when virtqueue is broken (diff)
downloadlinux-27873de99f2fecca0f6b257316489ef2a1d86ffd.tar.xz
linux-27873de99f2fecca0f6b257316489ef2a1d86ffd.zip
scsi: qla2xxx: Fix a recently introduced memory leak
qla2x00_probe_one() allocates IRQs before it initializes rsp_q_map so IRQs must be freed even if rsp_q_map allocation did not occur. This was detected by kmemleak. Fixes: 4fa183455988 ("scsi: qla2xxx: Utilize pci_alloc_irq_vectors/pci_free_irq_vectors calls") Signed-off-by: Bart Van Assche <bart.vanassche@sandisk.com> Cc: Michael Hernandez <michael.hernandez@cavium.com> Cc: Himanshu Madhani <himanshu.madhani@cavium.com> Cc: Christoph Hellwig <hch@lst.de> Cc: <stable@vger.kernel.org> Reviewed-by: Christoph Hellwig <hch@lst.de> Acked-By: Himanshu Madhani <himanshu.madhani@cavium.com> Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
-rw-r--r--drivers/scsi/qla2xxx/qla_isr.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/scsi/qla2xxx/qla_isr.c b/drivers/scsi/qla2xxx/qla_isr.c
index 5815403d1d65..3116bf390b06 100644
--- a/drivers/scsi/qla2xxx/qla_isr.c
+++ b/drivers/scsi/qla2xxx/qla_isr.c
@@ -3237,7 +3237,7 @@ qla2x00_free_irqs(scsi_qla_host_t *vha)
* from a probe failure context.
*/
if (!ha->rsp_q_map || !ha->rsp_q_map[0])
- return;
+ goto free_irqs;
rsp = ha->rsp_q_map[0];
if (ha->flags.msix_enabled) {
@@ -3257,6 +3257,7 @@ qla2x00_free_irqs(scsi_qla_host_t *vha)
free_irq(pci_irq_vector(ha->pdev, 0), rsp);
}
+free_irqs:
pci_free_irq_vectors(ha->pdev);
}