An error occurred while fetching folder content.
vfio/pci: fix memory leaks of eventfd ctx
Qian Cai authored
[ Upstream commit 1518ac27

 ]

Finished a qemu-kvm (-device vfio-pci,host=0001:01:00.0) triggers a few
memory leaks after a while because vfio_pci_set_ctx_trigger_single()
calls eventfd_ctx_fdget() without the matching eventfd_ctx_put() later.
Fix it by calling eventfd_ctx_put() for those memory in
vfio_pci_release() before vfio_device_release().

unreferenced object 0xebff008981cc2b00 (size 128):
  comm "qemu-kvm", pid 4043, jiffies 4294994816 (age 9796.310s)
  hex dump (first 32 bytes):
    01 00 00 00 6b 6b 6b 6b 00 00 00 00 ad 4e ad de  ....kkkk.....N..
    ff ff ff ff 6b 6b 6b 6b ff ff ff ff ff ff ff ff  ....kkkk........
  backtrace:
    [<00000000917e8f8d>] slab_post_alloc_hook+0x74/0x9c
    [<00000000df0f2aa2>] kmem_cache_alloc_trace+0x2b4/0x3d4
    [<000000005fcec025>] do_eventfd+0x54/0x1ac
    [<0000000082791a69>] __arm64_sys_eventfd2+0x34/0x44
    [<00000000b819758c>] do_el0_svc+0x128/0x1dc
    [<00000000b244e810>] el0_sync_handler+0xd0/0x268
    [<00000000d495ef94>] el0_sync+0x164/0x180
unreferenced object 0x29ff008981cc4180 (size 128):
  comm "qemu-kvm", pid 4043, jiffies 4294994818 (age 9796.290s)
  hex dump (first 32 bytes):
    01 00 00 00 6b 6b 6b 6b 00 00 00 00 ad 4e ad de  ....kkkk.....N..
    ff ff ff ff 6b 6b 6b 6b ff ff ff ff ff ff ff ff  ....kkkk........
  backtrace:
    [<00000000917e8f8d>] slab_post_alloc_hook+0x74/0x9c
    [<00000000df0f2aa2>] kmem_cache_alloc_trace+0x2b4/0x3d4
    [<000000005fcec025>] do_eventfd+0x54/0x1ac
    [<0000000082791a69>] __arm64_sys_eventfd2+0x34/0x44
    [<00000000b819758c>] do_el0_svc+0x128/0x1dc
    [<00000000b244e810>] el0_sync_handler+0xd0/0x268
    [<00000000d495ef94>] el0_sync+0x164/0x180
Signed-off-by: default avatarQian Cai <cai@lca.pw>
Signed-off-by: default avatarAlex Williamson <alex.williamson@redhat.com>
Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
c467ff96
Name Last commit Last update
..
accessibility License cleanup: add SPDX GPL-2.0 license identifier to files with no license
acpi ACPI: EC: Reference count query handlers under lock
amba ARM: amba: Don't read past the end of sysfs "driver_override" buffer
android binder: Prevent context manager from incrementing ref 0
ata libata: implement ATA_HORKAGE_MAX_TRIM_128M and apply to Sandisks
atm firestream: Fix memleak in fs_open
auxdisplay auxdisplay: panel: need to delete scan_timer when misc_register fails in panel_attach
base device property: Fix the secondary firmware node handling in set_primary_fwnode()
bcma bcma: fix incorrect update of BCMA_CORE_PCI_MDIO_DATA
block rbd: require global CAP_SYS_ADMIN for mapping and unmapping
bluetooth Bluetooth: hci_serdev: Only unregister device if it was registered
bus bus: sunxi-rsb: Return correct data when mixing 16-bit and 8-bit reads
cdrom cdrom: respect device capabilities during opening action
char drivers: char: tlclk.c: Avoid data race between init and interrupt handler
clk clk/ti/adpll: allocate room for terminating null
clocksource clocksource: dw_apb_timer_of: Fix missing clockevent timers
connector connector: make cn_proc explicitly non-modular
cpufreq cpufreq: powernv: Fix frame-size-overflow in powernv_cpufreq_work_fn
cpuidle cpuidle: Fixup IRQ state
crypto crypto: cpt - don't sleep of CRYPTO_TFM_REQ_MAY_SLEEP was not specified
dax dev-dax: check_vma: ratelimit dev_info-s
dca dmaengine: ioatdma: constify dca_ops structures
devfreq PM / devfreq: tegra30: Fix integer overflow on CPU's freq max out
dio License cleanup: add SPDX GPL-2.0 license identifier to files with no license
dma-buf dma-buf: Fix memory leak in sync_file_merge()
dma
edac
eisa
extcon
firewire
firmware
fmc
fpga
fsi
gpio
gpu
hid
hsi
hv
hwmon
hwspinlock
hwtracing
i2c
ide
idle
iio
infiniband
input
iommu
ipack
irqchip
isdn
leds
lightnvm
macintosh
mailbox
mcb
md
media
memory
memstick
message
mfd
misc
mmc
mtd
mux
net
nfc
ntb
nubus
nvdimm
nvme
nvmem
of
oprofile
parisc
parport
pci
pcmcia
perf
phy
pinctrl
platform
pnp
power
powercap
pps
ps3
ptp
pwm
rapidio
ras
regulator
remoteproc
reset
rpmsg
rtc
s390
sbus