From 9283be11b515d2cfb14d667bff6716125881b5fc Mon Sep 17 00:00:00 2001 From: Daniel Wagner Date: Apr 28 2023 07:33:13 +0000 Subject: scsi: qla2xxx: Fix memory leak in qla2x00_probe_one() (git-fixes). --- diff --git a/patches.suse/scsi-qla2xxx-Fix-memory-leak-in-qla2x00_probe_one.patch b/patches.suse/scsi-qla2xxx-Fix-memory-leak-in-qla2x00_probe_one.patch new file mode 100644 index 0000000..122c664 --- /dev/null +++ b/patches.suse/scsi-qla2xxx-Fix-memory-leak-in-qla2x00_probe_one.patch @@ -0,0 +1,51 @@ +From: Li Zetao +Date: Sat, 25 Mar 2023 11:00:04 +0000 +Subject: scsi: qla2xxx: Fix memory leak in qla2x00_probe_one() +Patch-mainline: v6.3-rc6 +Git-commit: 85ade4010e13ef152ea925c74d94253db92e5428 +References: git-fixes + +There is a memory leak reported by kmemleak: + + unreferenced object 0xffffc900003f0000 (size 12288): + comm "modprobe", pid 19117, jiffies 4299751452 (age 42490.264s) + hex dump (first 32 bytes): + 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + backtrace: + [<00000000629261a8>] __vmalloc_node_range+0xe56/0x1110 + [<0000000001906886>] __vmalloc_node+0xbd/0x150 + [<000000005bb4dc34>] vmalloc+0x25/0x30 + [<00000000a2dc1194>] qla2x00_create_host+0x7a0/0xe30 [qla2xxx] + [<0000000062b14b47>] qla2x00_probe_one+0x2eb8/0xd160 [qla2xxx] + [<00000000641ccc04>] local_pci_probe+0xeb/0x1a0 + +The root cause is traced to an error-handling path in qla2x00_probe_one() +when the adapter "base_vha" initialize failed. The fab_scan_rp "scan.l" is +used to record the port information and it is allocated in +qla2x00_create_host(). However, it is not released in the error handling +path "probe_failed". + +Fix this by freeing the memory of "scan.l" when an error occurs in the +adapter initialization process. + +Fixes: a4239945b8ad ("scsi: qla2xxx: Add switch command to simplify fabric discovery") +Signed-off-by: Li Zetao +Link: https://lore.kernel.org/r/20230325110004.363898-1-lizetao1@huawei.com +Reviewed-by: Himanshu Madhani +Signed-off-by: Martin K. Petersen +Acked-by: Daniel Wagner +--- + drivers/scsi/qla2xxx/qla_os.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/drivers/scsi/qla2xxx/qla_os.c ++++ b/drivers/scsi/qla2xxx/qla_os.c +@@ -3624,6 +3624,7 @@ qla2x00_probe_one(struct pci_dev *pdev, + probe_failed: + qla_enode_stop(base_vha); + qla_edb_stop(base_vha); ++ vfree(base_vha->scan.l); + if (base_vha->gnl.l) { + dma_free_coherent(&ha->pdev->dev, base_vha->gnl.size, + base_vha->gnl.l, base_vha->gnl.ldma); diff --git a/series.conf b/series.conf index 6d685f5..2fe1cd5 100644 --- a/series.conf +++ b/series.conf @@ -63237,6 +63237,7 @@ patches.suse/NFSv4-Fix-hangs-when-recovering-open-state-after-a-s.patch patches.suse/ring-buffer-Fix-race-while-reader-and-writer-are-on-the-same-page.patch patches.suse/ftrace-Mark-get_lock_parent_ip-__always_inline.patch + patches.suse/scsi-qla2xxx-Fix-memory-leak-in-qla2x00_probe_one.patch patches.suse/cgroup-cpuset-Wake-up-cpuset_attach_wq-tasks-in-cpuset_cancel_attach.patch patches.suse/cifs-fix-negotiate-context-parsing.patch patches.suse/powerpc-papr_scm-Update-the-NUMA-distance-table-for-.patch