44374911ac
[ Upstream commit 85ade4010e13ef152ea925c74d94253db92e5428 ]
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:
|
||
---|---|---|
.. | ||
Kconfig | ||
Makefile | ||
qla_attr.c | ||
qla_bsg.c | ||
qla_bsg.h | ||
qla_dbg.c | ||
qla_dbg.h | ||
qla_def.h | ||
qla_devtbl.h | ||
qla_dfs.c | ||
qla_dsd.h | ||
qla_edif_bsg.h | ||
qla_edif.c | ||
qla_edif.h | ||
qla_fw.h | ||
qla_gbl.h | ||
qla_gs.c | ||
qla_init.c | ||
qla_inline.h | ||
qla_iocb.c | ||
qla_isr.c | ||
qla_mbx.c | ||
qla_mid.c | ||
qla_mr.c | ||
qla_mr.h | ||
qla_nvme.c | ||
qla_nvme.h | ||
qla_nx2.c | ||
qla_nx2.h | ||
qla_nx.c | ||
qla_nx.h | ||
qla_os.c | ||
qla_settings.h | ||
qla_sup.c | ||
qla_target.c | ||
qla_target.h | ||
qla_tmpl.c | ||
qla_tmpl.h | ||
qla_version.h | ||
tcm_qla2xxx.c | ||
tcm_qla2xxx.h |