mirror of https://github.com/torvalds/linux.git
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>
|
||
|---|---|---|
| .. | ||
| Kconfig | ||
| Makefile | ||
| bcm63xx_pcmcia.c | ||
| bcm63xx_pcmcia.h | ||
| cardbus.c | ||
| cirrus.h | ||
| cistpl.c | ||
| cs.c | ||
| cs_internal.h | ||
| db1xxx_ss.c | ||
| ds.c | ||
| electra_cf.c | ||
| i82092.c | ||
| i82092aa.h | ||
| i82365.c | ||
| i82365.h | ||
| max1600.c | ||
| max1600.h | ||
| o2micro.h | ||
| omap_cf.c | ||
| pcmcia_cis.c | ||
| pcmcia_resource.c | ||
| pd6729.c | ||
| pd6729.h | ||
| pxa2xx_base.c | ||
| pxa2xx_base.h | ||
| pxa2xx_sharpsl.c | ||
| ricoh.h | ||
| rsrc_iodyn.c | ||
| rsrc_mgr.c | ||
| rsrc_nonstatic.c | ||
| sa11xx_base.c | ||
| sa11xx_base.h | ||
| sa1100_generic.c | ||
| sa1100_generic.h | ||
| sa1100_h3600.c | ||
| sa1111_generic.c | ||
| sa1111_generic.h | ||
| sa1111_jornada720.c | ||
| sa1111_neponset.c | ||
| soc_common.c | ||
| soc_common.h | ||
| socket_sysfs.c | ||
| tcic.c | ||
| tcic.h | ||
| ti113x.h | ||
| topic.h | ||
| vg468.h | ||
| xxs1500_ss.c | ||
| yenta_socket.c | ||
| yenta_socket.h | ||