mirror of
https://github.com/torvalds/linux.git
synced 2026-11-06 21:58:01 +01:00
mtd: mtdsuper: Fix MTD device reference leak in mtd_get_sb()
mtd_get_sb() is called with a reference to the MTD device already
taken by the caller. When sget_dev() fails, the function returns the
error without dropping that reference, so the device is never released
and its refcount never reaches zero. Every mount attempt on an MTD
device whose superblock cannot be set up leaks a reference.
Restore the put_mtd_device() that the fs_context conversion dropped on
this path.
Fixes: 0f07100410 ("mtd: Provide fs_context-aware mount_mtd() replacement")
Cc: stable@vger.kernel.org
Signed-off-by: Wentao Liang <vulab@iscas.ac.cn>
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
This commit is contained in:
parent
e6ca524ee5
commit
62ee3da38f
|
|
@ -31,8 +31,10 @@ static int mtd_get_sb(struct fs_context *fc,
|
|||
int ret;
|
||||
|
||||
sb = sget_dev(fc, MKDEV(MTD_BLOCK_MAJOR, mtd->index));
|
||||
if (IS_ERR(sb))
|
||||
if (IS_ERR(sb)) {
|
||||
put_mtd_device(mtd);
|
||||
return PTR_ERR(sb);
|
||||
}
|
||||
|
||||
if (sb->s_root) {
|
||||
/* new mountpoint for an already mounted superblock */
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user