diff options
| author | Ruoyu Wang <ruoyuw560@gmail.com> | 2026-07-08 22:33:55 +0800 |
|---|---|---|
| committer | Miquel Raynal <miquel.raynal@bootlin.com> | 2026-07-17 17:49:23 +0200 |
| commit | 779aa4c66a96bf43d2d62982ea1a9096a9128d87 (patch) | |
| tree | ad681d1de4fd1cea216a0d6df40a2ac209757292 /scripts/objdiff | |
| parent | e9290031f736e99ad17c25c00311c92c266843b7 (diff) | |
| download | linux-779aa4c66a96bf43d2d62982ea1a9096a9128d87.tar.gz linux-779aa4c66a96bf43d2d62982ea1a9096a9128d87.zip | |
mtd: mtdswap: Avoid freeing registered blktrans device twice
In mtdswap_add_mtd(), debugfs setup failure after successful blktrans
registration can free mbd_dev twice.
add_mtd_blktrans_dev() initializes the blktrans device reference and
publishes the disk. Once that succeeds, del_mtd_blktrans_dev() tears the
disk down and drops the blktrans reference; when that reference reaches
zero, blktrans_dev_release() frees the mtd_blktrans_dev.
The debugfs failure path called del_mtd_blktrans_dev(mbd_dev), then fell
through the common cleanup label and called kfree(mbd_dev) again. Clear
the local pointer after deregistration so the common cleanup can still
release the mtdswap state without freeing the blktrans object twice.
This issue was found by a static analysis checker and confirmed by
manual source review.
Fixes: e8e3edb95ce6 ("mtd: create per-device and module-scope debugfs entries")
Signed-off-by: Ruoyu Wang <ruoyuw560@gmail.com>
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
Diffstat (limited to 'scripts/objdiff')
0 files changed, 0 insertions, 0 deletions
