linux_dsm_epyc7002/drivers
Logan Gunthorpe 3b7830904e nvme-multipath: Fix memory leak with ana_log_buf
kmemleak reports a memory leak with the ana_log_buf allocated by
nvme_mpath_init():

unreferenced object 0xffff888120e94000 (size 8208):
  comm "nvme", pid 6884, jiffies 4295020435 (age 78786.312s)
    hex dump (first 32 bytes):
      00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00  ................
      01 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00  ................
    backtrace:
      [<00000000e2360188>] kmalloc_order+0x97/0xc0
      [<0000000079b18dd4>] kmalloc_order_trace+0x24/0x100
      [<00000000f50c0406>] __kmalloc+0x24c/0x2d0
      [<00000000f31a10b9>] nvme_mpath_init+0x23c/0x2b0
      [<000000005802589e>] nvme_init_identify+0x75f/0x1600
      [<0000000058ef911b>] nvme_loop_configure_admin_queue+0x26d/0x280
      [<00000000673774b9>] nvme_loop_create_ctrl+0x2a7/0x710
      [<00000000f1c7a233>] nvmf_dev_write+0xc66/0x10b9
      [<000000004199f8d0>] __vfs_write+0x50/0xa0
      [<0000000065466fef>] vfs_write+0xf3/0x280
      [<00000000b0db9a8b>] ksys_write+0xc6/0x160
      [<0000000082156b91>] __x64_sys_write+0x43/0x50
      [<00000000c34fbb6d>] do_syscall_64+0x77/0x2f0
      [<00000000bbc574c9>] entry_SYSCALL_64_after_hwframe+0x49/0xbe

nvme_mpath_init() is called by nvme_init_identify() which is called in
multiple places (nvme_reset_work(), nvme_passthru_end(), etc). This
means nvme_mpath_init() may be called multiple times before
nvme_mpath_uninit() (which is only called on nvme_free_ctrl()).

When nvme_mpath_init() is called multiple times, it overwrites the
ana_log_buf pointer with a new allocation, thus leaking the previous
allocation.

To fix this, free ana_log_buf before allocating a new one.

Fixes: 0d0b660f21 ("nvme: add ANA support")
Cc: <stable@vger.kernel.org>
Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Logan Gunthorpe <logang@deltatee.com>
Signed-off-by: Keith Busch <kbusch@kernel.org>
2020-02-21 23:52:25 +09:00
..
accessibility
acpi Merge branch 'core-headers-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2020-01-28 08:20:54 -08:00
amba
android binder: fix log spam for existing debugfs file creation. 2020-01-22 15:14:24 +01:00
ata ioremap changes for 5.6 2020-01-27 13:03:00 -08:00
atm Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next 2020-01-28 16:02:33 -08:00
auxdisplay
base linux-kselftest-5.6-rc1-kunit 2020-01-29 15:25:34 -08:00
bcma Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next 2020-01-28 16:02:33 -08:00
block brd: check and limit max_part par 2020-02-04 07:19:33 -07:00
bluetooth Bluetooth: btrtl: Use kvmalloc for FW allocations 2020-01-24 19:57:53 +01:00
bus Char/Misc driver changes for 5.6-rc1 2020-01-29 10:35:54 -08:00
cdrom
char Char/Misc driver changes for 5.6-rc1 2020-01-29 10:35:54 -08:00
clk ioremap changes for 5.6 2020-01-27 13:03:00 -08:00
clocksource The timekeeping and timers departement provides: 2020-01-27 16:47:05 -08:00
connector
counter
cpufreq ioremap changes for 5.6 2020-01-27 13:03:00 -08:00
cpuidle Merge branch 'intel_idle+acpi' 2020-01-23 00:35:50 +01:00
crypto Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next 2020-01-28 16:02:33 -08:00
dax
dca
devfreq PM / devfreq: Add debugfs support with devfreq_summary file 2020-01-16 19:14:49 +09:00
dio
dma ioremap changes for 5.6 2020-01-27 13:03:00 -08:00
dma-buf
edac ioremap changes for 5.6 2020-01-27 13:03:00 -08:00
eisa
extcon
firewire
firmware Char/Misc driver changes for 5.6-rc1 2020-01-29 10:35:54 -08:00
fpga fpga: xilinx-pr-decoupler: Remove clk_get error message for probe defer 2020-01-10 12:51:56 -08:00
fsi
gnss
gpio This is the bulk of pin control changes for the v5.6 kernel cycle: 2020-01-29 09:51:36 -08:00
gpu y2038: core, driver and file system changes 2020-01-29 14:55:47 -08:00
greybus
hid Merge branch 'for-5.6/logitech' into for-linus 2020-01-27 15:49:49 +01:00
hsi
hv clocksource/drivers/hyper-v: Untangle stimers and timesync from clocksources 2020-01-16 19:09:02 +01:00
hwmon ioremap changes for 5.6 2020-01-27 13:03:00 -08:00
hwspinlock
hwtracing coresight: etm4x: Fix unused function warning 2020-01-14 15:38:28 +01:00
i2c ioremap changes for 5.6 2020-01-27 13:03:00 -08:00
i3c i3c: master: dw: reattach device on first available location of address table 2020-01-13 10:00:05 +01:00
ide
idle Merge branch 'x86-cpu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2020-01-28 12:46:42 -08:00
iio Merge 5.5-rc7 into staging-next 2020-01-22 09:05:34 +01:00
infiniband Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next 2020-01-28 16:02:33 -08:00
input ioremap changes for 5.6 2020-01-27 13:03:00 -08:00
interconnect
iommu ioremap changes for 5.6 2020-01-27 13:03:00 -08:00
ipack
irqchip The interrupt departement provides: 2020-01-27 17:22:21 -08:00
isdn
leds leds: lm3532: add pointer to documentation and fix typo 2020-01-22 21:08:24 +01:00
lightnvm
macintosh
mailbox
mcb
md bcache: remove macro nr_to_fifo_front() 2020-02-13 08:53:50 -07:00
media Merge branch 'efi-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2020-01-28 09:03:40 -08:00
memory
memstick
message Merge ra.kernel.org:/pub/scm/linux/kernel/git/netdev/net 2020-01-19 22:10:04 +01:00
mfd
misc Char/Misc driver changes for 5.6-rc1 2020-01-29 10:35:54 -08:00
mmc ioremap changes for 5.6 2020-01-27 13:03:00 -08:00
mtd ioremap changes for 5.6 2020-01-27 13:03:00 -08:00
mux
net USB/Thunderbolt/PHY driver updates for 5.6-rc1 2020-01-29 10:09:44 -08:00
nfc Merge ra.kernel.org:/pub/scm/linux/kernel/git/netdev/net 2020-01-19 22:10:04 +01:00
ntb
nubus
nvdimm
nvme nvme-multipath: Fix memory leak with ana_log_buf 2020-02-21 23:52:25 +09:00
nvmem nvmem: add QTI SDAM driver 2020-01-16 20:56:49 +01:00
of
opp ioremap changes for 5.6 2020-01-27 13:03:00 -08:00
oprofile
parisc
parport
pci ioremap changes for 5.6 2020-01-27 13:03:00 -08:00
pcmcia
perf perf/imx_ddr: Fix cpu hotplug state cleanup 2020-01-15 12:48:40 +00:00
phy USB/Thunderbolt/PHY driver updates for 5.6-rc1 2020-01-29 10:09:44 -08:00
pinctrl This is the bulk of pin control changes for the v5.6 kernel cycle: 2020-01-29 09:51:36 -08:00
platform ioremap changes for 5.6 2020-01-27 13:03:00 -08:00
pnp PNP: isapnp: remove defined but not used function 'isapnp_checksum' 2020-01-23 00:26:13 +01:00
power power: avs: qcom-cpr: remove duplicated include from qcom-cpr.c 2020-01-08 23:25:22 +01:00
powercap Merge back power capping changes for v5.6. 2020-01-13 10:32:19 +01:00
pps
ps3
ptp Merge ra.kernel.org:/pub/scm/linux/kernel/git/netdev/net 2020-01-19 22:10:04 +01:00
pwm
rapidio
ras
regulator ioremap changes for 5.6 2020-01-27 13:03:00 -08:00
remoteproc
reset
rpmsg
rtc ioremap changes for 5.6 2020-01-27 13:03:00 -08:00
s390 s390/qeth: remove HARDSETUP state 2020-01-26 15:20:32 +01:00
sbus
scsi ioremap changes for 5.6 2020-01-27 13:03:00 -08:00
sfi
sh
siox siox: Use the correct style for SPDX License Identifier 2020-01-14 21:46:53 +01:00
slimbus slimbus: qcom: add missed clk_disable_unprepare in remove 2020-01-14 21:46:48 +01:00
soc ioremap changes for 5.6 2020-01-27 13:03:00 -08:00
soundwire soundwire: cadence: fix kernel-doc parameter descriptions 2020-01-16 17:34:38 +05:30
spi ioremap changes for 5.6 2020-01-27 13:03:00 -08:00
spmi
ssb
staging Staging/IIO patches for 5.6-rc1 2020-01-29 10:15:11 -08:00
target SCSI fixes on 20200126 2020-01-26 10:39:09 -08:00
tc
tee Merge branch 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6 2020-01-28 15:38:56 -08:00
thermal - Depromote debug print on the db8500 platform (Linus Walleij) 2020-01-28 16:31:08 -08:00
thunderbolt thunderbolt: fix memory leak of object sw 2020-01-14 15:37:41 +01:00
tty TTY/Serial driver updates for 5.6-rc1 2020-01-29 10:13:27 -08:00
uio uio: uio_pdrv_genirq: Do not log an error when deferring probe routine. 2020-01-14 15:27:51 +01:00
usb USB/Thunderbolt/PHY driver updates for 5.6-rc1 2020-01-29 10:09:44 -08:00
vfio
vhost
video TTY/Serial driver updates for 5.6-rc1 2020-01-29 10:13:27 -08:00
virt
virtio
visorbus visorbus: fix uninitialized variable access 2020-01-14 15:30:35 +01:00
vlynq
vme Char/Misc driver changes for 5.6-rc1 2020-01-29 10:35:54 -08:00
w1 Char/Misc driver changes for 5.6-rc1 2020-01-29 10:35:54 -08:00
watchdog ioremap changes for 5.6 2020-01-27 13:03:00 -08:00
xen
zorro
Kconfig
Makefile