summaryrefslogtreecommitdiff
path: root/fs/isofs/inode.c
diff options
context:
space:
mode:
authorChengguang Xu <cgxu519@gmx.com>2018-04-14 20:16:06 +0800
committerJan Kara <jack@suse.cz>2018-04-16 09:47:41 +0200
commit4f34a5130a471f32f2fe7750769ab4057dc3eaa0 (patch)
treee862b0c04f12b3b019f953bd216e8b8400617ec8 /fs/isofs/inode.c
parent96348e49366c6e2a5a2e62ba0350f66ef5d67ea7 (diff)
downloadlwn-4f34a5130a471f32f2fe7750769ab4057dc3eaa0.tar.gz
lwn-4f34a5130a471f32f2fe7750769ab4057dc3eaa0.zip
isofs: fix potential memory leak in mount option parsing
When specifying string type mount option (e.g., iocharset) several times in a mount, current option parsing may cause memory leak. Hence, call kfree for previous one in this case. Meanwhile, check memory allocation result for it. Signed-off-by: Chengguang Xu <cgxu519@gmx.com> Signed-off-by: Jan Kara <jack@suse.cz>
Diffstat (limited to 'fs/isofs/inode.c')
-rw-r--r--fs/isofs/inode.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/fs/isofs/inode.c b/fs/isofs/inode.c
index bc258a4402f6..ec3fba7d492f 100644
--- a/fs/isofs/inode.c
+++ b/fs/isofs/inode.c
@@ -394,7 +394,10 @@ static int parse_options(char *options, struct iso9660_options *popt)
break;
#ifdef CONFIG_JOLIET
case Opt_iocharset:
+ kfree(popt->iocharset);
popt->iocharset = match_strdup(&args[0]);
+ if (!popt->iocharset)
+ return 0;
break;
#endif
case Opt_map_a: