linux/drivers/pcmcia
Armin Wolf c85fd9422f pcmcia: rsrc_nonstatic: Fix memory leak in nonstatic_release_resource_db()
When nonstatic_release_resource_db() frees all resources associated
with an PCMCIA socket, it forgets to free socket_data too, causing
a memory leak observable with kmemleak:

unreferenced object 0xc28d1000 (size 64):
  comm "systemd-udevd", pid 297, jiffies 4294898478 (age 194.484s)
  hex dump (first 32 bytes):
    00 00 00 00 00 00 00 00 f0 85 0e c3 00 00 00 00  ................
    00 00 00 00 0c 10 8d c2 00 00 00 00 00 00 00 00  ................
  backtrace:
    [<ffda4245>] __kmem_cache_alloc_node+0x2d7/0x4a0
    [<7e51f0c8>] kmalloc_trace+0x31/0xa4
    [<d52b4ca0>] nonstatic_init+0x24/0x1a4 [pcmcia_rsrc]
    [<a2f13e08>] pcmcia_register_socket+0x200/0x35c [pcmcia_core]
    [<a728be1b>] yenta_probe+0x4d8/0xa70 [yenta_socket]
    [<c48fac39>] pci_device_probe+0x99/0x194
    [<84b7c690>] really_probe+0x181/0x45c
    [<8060fe6e>] __driver_probe_device+0x75/0x1f4
    [<b9b76f43>] driver_probe_device+0x28/0xac
    [<648b766f>] __driver_attach+0xeb/0x1e4
    [<6e9659eb>] bus_for_each_dev+0x61/0xb4
    [<25a669f3>] driver_attach+0x1e/0x28
    [<d8671d6b>] bus_add_driver+0x102/0x20c
    [<df0d323c>] driver_register+0x5b/0x120
    [<942cd8a4>] __pci_register_driver+0x44/0x4c
    [<e536027e>] __UNIQUE_ID___addressable_cleanup_module188+0x1c/0xfffff000 [iTCO_vendor_support]

Fix this by freeing socket_data too.

Tested on a Acer Travelmate 4002WLMi by manually binding/unbinding
the yenta_cardbus driver (yenta_socket).

Signed-off-by: Armin Wolf <W_Armin@gmx.de>
Message-ID: <20230512184529.5094-1-W_Armin@gmx.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2023-06-15 13:42:18 +02:00
..
bcm63xx_pcmcia.c treewide: Convert del_timer*() to timer_shutdown*() 2022-12-25 13:38:09 -08:00
bcm63xx_pcmcia.h
cardbus.c
cirrus.h
cistpl.c pcmcia: cistpl: Demote non-conformant kernel-doc headers to standard comments 2021-03-15 08:22:22 +01:00
cs_internal.h
cs.c driver core: class: mark class_release() as taking a const * 2023-04-03 21:42:43 +02:00
db1xxx_ss.c pcmcia: db1xxx_ss: Fix fall-through warning for Clang 2021-10-13 14:47:48 -05:00
ds.c driver core: class: remove struct class_interface * from callbacks 2023-04-03 21:42:52 +02:00
electra_cf.c treewide: Convert del_timer*() to timer_shutdown*() 2022-12-25 13:38:09 -08:00
i82092.c pcmcia: Add __init/__exit annotations to module init/exit funcs 2022-09-22 16:45:25 +02:00
i82092aa.h
i82365.c
i82365.h
Kconfig pcmcia: add HAS_IOPORT dependencies 2023-05-31 19:17:40 +01:00
Makefile pcmcia: remove unused pxa/sa1100 drivers 2023-02-01 17:23:38 +01:00
max1600.c
max1600.h
o2micro.h
omap_cf.c treewide: Convert del_timer*() to timer_shutdown*() 2022-12-25 13:38:09 -08:00
pcmcia_cis.c pcmcia: hide the MAC address helpers if !NET 2021-11-22 14:02:52 +00:00
pcmcia_resource.c pcmcia: make pcmcia_release_io() void, as no-one is interested in return value 2022-01-02 19:01:37 +01:00
pd6729.c treewide: Convert del_timer*() to timer_shutdown*() 2022-12-25 13:38:09 -08:00
pd6729.h
pxa2xx_base.c ARM: pxa: remove unused board files 2023-01-20 11:23:44 +01:00
pxa2xx_base.h
pxa2xx_sharpsl.c ARM: pxa: move pcmcia board data into mach-pxa 2022-04-19 21:34:05 +02:00
ricoh.h
rsrc_iodyn.c
rsrc_mgr.c
rsrc_nonstatic.c pcmcia: rsrc_nonstatic: Fix memory leak in nonstatic_release_resource_db() 2023-06-15 13:42:18 +02:00
sa11xx_base.c
sa11xx_base.h
sa1100_generic.c ARM: sa1100: remove unused board files 2023-01-12 10:53:12 +01:00
sa1100_generic.h
sa1100_h3600.c ARM: sa1100: remove unused board files 2023-01-12 10:53:12 +01:00
sa1111_generic.c ARM: pxa: remove unused board files 2023-01-20 11:23:44 +01:00
sa1111_generic.h
sa1111_jornada720.c
sa1111_neponset.c
soc_common.c ARM: pxa/sa1100: move I/O space to PCI_IOBASE 2022-05-07 22:56:17 +02:00
soc_common.h ARM: pxa: move pcmcia board data into mach-pxa 2022-04-19 21:34:05 +02:00
socket_sysfs.c pcmcia: use sysfs_emit{,_at} for sysfs output 2022-01-06 09:15:52 +01:00
tcic.c
tcic.h
ti113x.h
topic.h
vg468.h
xxs1500_ss.c
yenta_socket.c treewide: Convert del_timer*() to timer_shutdown*() 2022-12-25 13:38:09 -08:00
yenta_socket.h