WSL2-Linux-Kernel/drivers
Chuang Wang a8d67367ab net: macvlan: fix memory leaks of macvlan_common_newlink
[ Upstream commit 23569b5652 ]

kmemleak reports memory leaks in macvlan_common_newlink, as follows:

 ip link add link eth0 name .. type macvlan mode source macaddr add
 <MAC-ADDR>

kmemleak reports:

unreferenced object 0xffff8880109bb140 (size 64):
  comm "ip", pid 284, jiffies 4294986150 (age 430.108s)
  hex dump (first 32 bytes):
    00 00 00 00 00 00 00 00 b8 aa 5a 12 80 88 ff ff  ..........Z.....
    80 1b fa 0d 80 88 ff ff 1e ff ac af c7 c1 6b 6b  ..............kk
  backtrace:
    [<ffffffff813e06a7>] kmem_cache_alloc_trace+0x1c7/0x300
    [<ffffffff81b66025>] macvlan_hash_add_source+0x45/0xc0
    [<ffffffff81b66a67>] macvlan_changelink_sources+0xd7/0x170
    [<ffffffff81b6775c>] macvlan_common_newlink+0x38c/0x5a0
    [<ffffffff81b6797e>] macvlan_newlink+0xe/0x20
    [<ffffffff81d97f8f>] __rtnl_newlink+0x7af/0xa50
    [<ffffffff81d98278>] rtnl_newlink+0x48/0x70
    ...

In the scenario where the macvlan mode is configured as 'source',
macvlan_changelink_sources() will be execured to reconfigure list of
remote source mac addresses, at the same time, if register_netdevice()
return an error, the resource generated by macvlan_changelink_sources()
is not cleaned up.

Using this patch, in the case of an error, it will execute
macvlan_flush_sources() to ensure that the resource is cleaned up.

Fixes: aa5fd0fb77 ("driver: macvlan: Destroy new macvlan port if macvlan_common_newlink failed.")
Signed-off-by: Chuang Wang <nashuiliang@gmail.com>
Link: https://lore.kernel.org/r/20221109090735.690500-1-nashuiliang@gmail.com
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2022-11-16 09:58:23 +01:00
..
accessibility tty: the rest, stop using tty_schedule_flip() 2022-07-29 17:25:32 +02:00
acpi ACPI: APEI: Fix integer overflow in ghes_estatus_pool_init() 2022-11-10 18:15:34 +01:00
amba
android binder: remove inaccurate mmap_assert_locked() 2022-09-23 14:15:49 +02:00
ata ata: pata_legacy: fix pdc20230_set_piomode() 2022-11-10 18:15:28 +01:00
atm atm: idt77252: fix use-after-free bugs caused by tst_timer 2022-08-25 11:40:15 +02:00
auxdisplay
base PM: domains: Fix handling of unavailable/disabled idle states 2022-11-03 23:59:18 +09:00
bcma
block nbd: Fix hung when signal interrupts nbd_start_device_ioctl() 2022-10-26 12:35:47 +02:00
bluetooth Bluetooth: virtio_bt: Use skb_put to set length 2022-11-10 18:15:30 +01:00
bus bus: hisi_lpc: fix missing platform_device_put() in hisi_lpc_acpi_probe() 2022-08-17 14:23:10 +02:00
cdrom
char hwrng: imx-rngc - Moving IRQ handler registering after imx_rngc_irq_mask_clear() 2022-10-26 12:35:24 +02:00
clk clk: qcom: Update the force mem core bit for GPU clocks 2022-11-10 18:15:35 +01:00
clocksource clocksource/drivers/ixp4xx: remove EXPORT_SYMBOL_GPL from ixp4xx_timer_setup() 2022-07-07 17:53:32 +02:00
comedi
connector
counter counter: microchip-tcb-capture: Handle Signal1 read and Synapse 2022-11-03 23:59:13 +09:00
cpufreq cpufreq: intel_pstate: hybrid: Use known scaling factor for P-cores 2022-11-03 23:59:12 +09:00
cpuidle
crypto crypto: cavium - prevent integer overflow loading firmware 2022-10-26 12:35:28 +02:00
cxl cxl/port: Hold port reference until decoder release 2022-07-12 16:34:58 +02:00
dax devdax: Fix soft-reservation memory description 2022-09-28 11:11:57 +02:00
dca
devfreq PM / devfreq: exynos-ppmu: Fix refcount leak in of_get_devfreq_events 2022-07-07 17:53:27 +02:00
dio
dma dmaengine: ti: k3-udma-glue: fix memory leak when register device fail 2022-11-16 09:58:19 +01:00
dma-buf udmabuf: Set ubuf->sg = NULL if the creation of sg table fails 2022-10-26 12:35:39 +02:00
edac EDAC/ghes: Set the DIMM label unconditionally 2022-08-03 12:03:55 +02:00
eisa
extcon
firewire
firmware efi: random: Use 'ACPI reclaim' memory for random seed 2022-11-10 18:15:39 +01:00
fpga fpga: prevent integer overflow in dfl_feature_ioctl_set_irq() 2022-10-26 12:35:07 +02:00
fsi fsi: core: Check error number after calling ida_simple_get 2022-10-26 12:35:17 +02:00
gnss
gpio gpio: rockchip: request GPIO mux to pinctrl when setting direction 2022-10-26 12:34:26 +02:00
gpu drm/vc4: Fix missing platform_unregister_drivers() call in vc4_drm_register() 2022-11-16 09:58:18 +01:00
greybus
hid HID: hyperv: fix possible memory leak in mousevsc_probe() 2022-11-16 09:58:15 +01:00
hsi HSI: omap_ssi_port: Fix dma_map_sg error check 2022-10-26 12:35:05 +02:00
hv Drivers: hv: Never allocate anything besides framebuffer from framebuffer memory region 2022-09-28 11:11:55 +02:00
hwmon hwmon/coretemp: Handle large core ID value 2022-10-29 10:12:54 +02:00
hwspinlock hwspinlock: qcom: correct MMIO max register for newer SoCs 2022-11-16 09:58:13 +01:00
hwtracing coresight: cti: Fix hang in cti_disable_hw() 2022-11-03 23:59:13 +09:00
i2c i2c: piix4: Fix adapter not be removed in piix4_remove() 2022-11-10 18:15:36 +01:00
i3c
idle intel_idle: Disable IBRS during long idle 2022-07-23 12:54:04 +02:00
iio iio: adxl372: Fix unsafe buffer attributes 2022-11-03 23:59:12 +09:00
infiniband RDMA/qedr: clean up work queue on failure in qedr_alloc_resources() 2022-11-10 18:15:27 +01:00
input Input: xpad - fix wireless 360 controller breaking after suspend 2022-10-15 07:59:04 +02:00
interconnect interconnect: imx: fix max_node_id 2022-08-17 14:23:53 +02:00
iommu iommu/vt-d: Clean up si_domain in the init_dmars() error path 2022-10-29 10:12:57 +02:00
ipack
irqchip irqchip/tegra: Fix overflow implicit truncation warnings 2022-08-25 11:40:32 +02:00
isdn isdn: mISDN: netjet: fix wrong check of device registration 2022-11-10 18:15:29 +01:00
leds leds: lm3601x: Don't use mutex after it was destroyed 2022-10-26 12:34:39 +02:00
macintosh macintosh/adb: fix oob read in do_adb_query() function 2022-08-11 13:07:54 +02:00
mailbox mailbox: bcm-ferxrm-mailbox: Fix error check for dma_map_sg 2022-10-26 12:35:21 +02:00
mcb
md dm: remove unnecessary assignment statement in alloc_dev() 2022-10-29 10:12:56 +02:00
media media: dvb-frontends/drxk: initialize err to 0 2022-11-10 18:15:34 +01:00
memory memory: of: Fix refcount leak bug in of_lpddr3_get_ddr_timings() 2022-10-26 12:34:58 +02:00
memstick memstick/ms_block: Fix a memory leak 2022-08-17 14:23:50 +02:00
message
mfd mfd: sm501: Add check for platform_driver_register() 2022-10-26 12:35:18 +02:00
misc misc: ocxl: fix possible refcount leak in afu_ioctl() 2022-10-26 12:35:07 +02:00
mmc mmc: block: Remove error check of hw_reset on reset 2022-11-03 23:59:14 +09:00
most
mtd mtd: parsers: bcm47xxpart: Fix halfblock reads 2022-11-10 18:15:32 +01:00
mux
net net: macvlan: fix memory leaks of macvlan_common_newlink 2022-11-16 09:58:23 +01:00
nfc nfc: nfcmrvl: Fix potential memory leak in nfcmrvl_i2c_nci_send() 2022-11-10 18:15:28 +01:00
ntb NTB: ntb_tool: uninitialized heap data in tool_fn_write() 2022-08-25 11:40:14 +02:00
nubus
nvdimm nvdimm: Fix badblocks clear off-by-one error 2022-07-07 17:53:24 +02:00
nvme nvmet: fix workqueue MEM_RECLAIM flushing dependency 2022-10-29 10:12:56 +02:00
nvmem nvmem: core: Fix memleak in nvmem_register() 2022-10-26 12:34:23 +02:00
of of: fdt: fix off-by-one error in unflatten_dt_nodes() 2022-09-23 14:15:46 +02:00
opp opp: Fix error check in dev_pm_opp_attach_genpd() 2022-08-17 14:24:01 +02:00
parisc parisc: Export iosapic_serial_irq() symbol for serial port driver 2022-11-10 18:15:40 +01:00
parport
pci PCI: Sanitise firmware BAR assignments behind a PCI-PCI bridge 2022-10-26 12:34:24 +02:00
pcmcia
perf perf/arm_pmu_platform: fix tests for platform_get_irq() failure 2022-09-20 12:39:45 +02:00
phy phy: ralink: mt7621-pci: add sentinel to quirks table 2022-11-16 09:58:17 +01:00
pinctrl pinctrl: Ingenic: JZ4755 bug fixes 2022-11-03 23:59:13 +09:00
platform platform/x86: msi-laptop: Change DMI match / alias strings to fix module autoloading 2022-10-26 12:35:40 +02:00
pnp
power power: supply: adp5061: fix out-of-bounds read in adp5061_get_chg_type() 2022-10-26 12:35:47 +02:00
powercap powercap: intel_rapl: fix UBSAN shift-out-of-bounds issue 2022-10-26 12:35:30 +02:00
pps
ps3
ptp
pwm pwm: lpc18xx: Fix period handling 2022-08-17 14:23:16 +02:00
rapidio
ras
regulator regulator: core: Prevent integer underflow 2022-10-26 12:35:35 +02:00
remoteproc remoteproc: sysmon: Wait for SSCTL service to come up 2022-08-17 14:24:09 +02:00
reset reset: imx7: Fix the iMX8MP PCIe PHY PERST support 2022-10-05 10:39:40 +02:00
rpmsg rpmsg: qcom: glink: replace strncpy() with strscpy_pad() 2022-10-12 09:53:28 +02:00
rtc rtc: rx8025: fix 12/24 hour mode detection on RX-8035 2022-08-17 14:22:53 +02:00
s390 s390/cio: fix out-of-bounds access on cio_ignore free 2022-11-10 18:15:33 +01:00
sbus
scsi scsi: core: Restrict legal sdev_state transitions via sysfs 2022-11-10 18:15:34 +01:00
sh
siox
slimbus slimbus: qcom-ngd-ctrl: allow compile testing without QCOM_RPROC_COMMON 2022-10-26 12:35:14 +02:00
soc soc/tegra: fuse: Drop Kconfig dependency on TEGRA20_APB_DMA 2022-10-26 12:35:00 +02:00
soundwire soundwire: qcom: check for outanding writes before doing a read 2022-11-16 09:58:14 +01:00
spi spi: Ensure that sg_table won't be used after being freed 2022-10-26 12:34:48 +02:00
spmi spmi: pmic-arb: correct duplicate APID to PPID mapping logic 2022-10-26 12:35:19 +02:00
ssb
staging media: meson: vdec: fix possible refcount leak in vdec_probe() 2022-11-10 18:15:34 +01:00
target
tc
tee tee: Fix tee_shm_register() for kernel TEE drivers 2022-11-10 18:15:42 +01:00
thermal thermal: intel_powerclamp: Use first online CPU as control_cpu 2022-10-26 12:35:56 +02:00
thunderbolt thunderbolt: Add DP OUT resource when DP tunnel is discovered 2022-11-16 09:58:13 +01:00
tty parisc: Make 8250_gsc driver dependend on CONFIG_PARISC 2022-11-10 18:15:40 +01:00
uio
usb xhci: Remove device endpoints from bandwidth list when freeing the device 2022-11-03 23:59:11 +09:00
vdpa vdpa/ifcvf: fix the calculation of queuepair 2022-10-05 10:39:43 +02:00
vfio vfio/type1: Unpin zero pages 2022-09-15 11:30:02 +02:00
vhost vhost/vsock: Use kvmalloc/kvfree for larger packets. 2022-10-26 12:34:47 +02:00
video fbdev: stifb: Fall back to cfb_fillrect() on 32-bit HCRX cards 2022-11-10 18:15:32 +01:00
virt vboxguest: Do not use devm for irq 2022-08-25 11:40:33 +02:00
virtio virtio_mmio: Restore guest page size on resume 2022-07-21 21:24:33 +02:00
visorbus
vlynq
vme
w1
watchdog watchdog: armada_37xx_wdt: check the return value of devm_ioremap() in armada_37xx_wdt_probe() 2022-08-17 14:24:11 +02:00
xen xen/gntdev: Accommodate VMA splitting 2022-10-26 12:34:24 +02:00
zorro
Kconfig
Makefile