jffs2: free jffs2_sb_info through jffs2_kill_sb()

When an invalid mount option is passed to jffs2, jffs2_parse_options()
will fail and jffs2_sb_info will be freed, but then jffs2_sb_info will
be used (use-after-free) and freeed (double-free) in jffs2_kill_sb().

Fix it by removing the buggy invocation of kfree() when getting invalid
mount options.

Fixes: 92abc475d8 ("jffs2: implement mount option parsing and compression overriding")
Cc: [email protected]
Signed-off-by: Hou Tao <[email protected]>
Reviewed-by: Richard Weinberger <[email protected]>
Signed-off-by: Boris Brezillon <[email protected]>
This commit is contained in:
Hou Tao 2018-10-06 17:09:35 +08:00 • committed by Boris Brezillon
commit 92e2921f7e

View file

@ -285,10 +285,8 @@ static int jffs2_fill_super(struct super_block *sb, void *data, int silent)
sb->s_fs_info = c;
ret = jffs2_parse_options(c, data);
if (ret) {
kfree(c);
if (ret)
return -EINVAL;
}
/* Initialize JFFS2 superblock locks, the further initialization will
* be done later */