linux/drivers/mtd
Pablo Martin-Gomez 6463cbe08b mtd: spinand: fix memory leak of ECC engine conf
Memory allocated for the ECC engine conf is not released during spinand
cleanup. Below kmemleak trace is seen for this memory leak:

unreferenced object 0xffffff80064f00e0 (size 8):
  comm "swapper/0", pid 1, jiffies 4294937458
  hex dump (first 8 bytes):
    00 00 00 00 00 00 00 00                          ........
  backtrace (crc 0):
    kmemleak_alloc+0x30/0x40
    __kmalloc_cache_noprof+0x208/0x3c0
    spinand_ondie_ecc_init_ctx+0x114/0x200
    nand_ecc_init_ctx+0x70/0xa8
    nanddev_ecc_engine_init+0xec/0x27c
    spinand_probe+0xa2c/0x1620
    spi_mem_probe+0x130/0x21c
    spi_probe+0xf0/0x170
    really_probe+0x17c/0x6e8
    __driver_probe_device+0x17c/0x21c
    driver_probe_device+0x58/0x180
    __device_attach_driver+0x15c/0x1f8
    bus_for_each_drv+0xec/0x150
    __device_attach+0x188/0x24c
    device_initial_probe+0x10/0x20
    bus_probe_device+0x11c/0x160

Fix the leak by calling nanddev_ecc_engine_cleanup() inside
spinand_cleanup().

Signed-off-by: Pablo Martin-Gomez <pmartin-gomez@freebox.fr>
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
2025-06-19 19:13:21 +02:00
..
chips mtd: cfi_cmdset_0002: remove redundant assignment to variable ret 2024-10-21 11:57:43 +02:00
devices mtd: Do not enable by default during compile testing 2025-04-28 10:37:19 +02:00
hyperbus mtd: hyperbus: Use of_property_present() for non-boolean properties 2025-01-15 19:12:19 +01:00
lpddr mtd: Switch back to struct platform_driver::remove() 2024-10-21 11:58:07 +02:00
maps mtd: Switch back to struct platform_driver::remove() 2024-10-21 11:58:07 +02:00
nand mtd: spinand: fix memory leak of ECC engine conf 2025-06-19 19:13:21 +02:00
parsers mtd: parsers: bcm47xxpart: make read-only array possible_nvram_sizes static const 2024-08-23 19:25:49 +02:00
spi-nor mtd: spi-nor: macronix: Add fixups for MX25L3255E 2025-04-08 15:04:54 +00:00
tests mtd: tests: Include <linux/prandom.h> instead of <linux/random.h> 2024-10-03 18:19:52 +02:00
ubi block: remove unused parameter 'q' parameter in __blk_rq_map_sg() 2025-03-13 05:46:19 -06:00
ftl.c mtd: ftl: use container_of() rather than cast 2022-09-19 18:14:53 +02:00
inftlcore.c mtd: inftlcore: Add error check for inftl_read_oob() 2025-04-07 09:02:31 +02:00
inftlmount.c mtd: inftl: remove unnecessary oom message 2021-06-11 20:44:21 +02:00
Kconfig mtdblock: Add comment about UBI block devices 2021-08-06 22:05:13 +02:00
Makefile
mtd_blkdevs.c block: force noio scope in blk_mq_freeze_queue 2025-01-31 07:20:08 -07:00
mtdblock.c mtdblock: make warning messages ratelimited 2023-07-27 17:16:14 +02:00
mtdblock_ro.c mtdblock: make warning messages ratelimited 2023-07-27 17:16:14 +02:00
mtdchar.c Revert "mtd: core: always create master device" 2025-06-18 11:18:23 +02:00
mtdconcat.c mtd: concat: Use kmemdup_array instead of kmemdup for multiple allocation 2024-08-23 19:25:51 +02:00
mtdcore.c Revert "mtd: core: always create master device" 2025-06-18 11:18:23 +02:00
mtdcore.h Revert "mtd: core: always create master device" 2025-06-18 11:18:23 +02:00
mtdoops.c mtd: mtdoops: Fix kmsgdump parameter renaming. 2024-07-22 17:56:22 +02:00
mtdpart.c Revert "mtd: core: always create master device" 2025-06-18 11:18:23 +02:00
mtdpstore.c mtd: Add check for devm_kcalloc() 2025-03-04 12:07:08 +01:00
mtdsuper.c mtd: key superblock by device number 2023-08-31 12:47:15 +02:00
mtdswap.c mtd: always initialize 'stats' in struct mtd_oob_ops 2022-09-21 10:38:07 +02:00
nftlcore.c mtd: always initialize 'stats' in struct mtd_oob_ops 2022-09-21 10:38:07 +02:00
nftlmount.c mtd: nftl: remove unnecessary oom message 2021-06-11 20:43:26 +02:00
rfd_ftl.c mtd/rfd_ftl: don't cast away the type when calling add_mtd_blktrans_dev 2021-08-23 10:01:06 +02:00
sm_ftl.c treewide, timers: Rename from_timer() to timer_container_of() 2025-06-08 09:07:37 +02:00
sm_ftl.h
ssfdc.c mtd: ssfdc: Improve a size determination in ssfdcr_add_mtd() 2024-02-05 14:22:39 +01:00