summaryrefslogtreecommitdiffstats
path: root/fs/ceph
diff options
context:
space:
mode:
authorChengguang Xu <cgxu519@icloud.com>2018-02-06 08:25:55 +0800
committerIlya Dryomov <idryomov@gmail.com>2018-02-26 16:19:30 +0100
commit937441f3a3158d5510ca8cc78a82453f57a96365 (patch)
tree50f5222a92bd9b764d95e9dc2bd78e63d83d98a3 /fs/ceph
parent6ef0bc6ddee1f62310877a1d53b1ea1d0d8e51a2 (diff)
downloadlinux-0-day-937441f3a3158d5510ca8cc78a82453f57a96365.tar.gz
linux-0-day-937441f3a3158d5510ca8cc78a82453f57a96365.tar.xz
libceph, ceph: avoid memory leak when specifying same option several times
When parsing string option, in order to avoid memory leak we need to carefully free it first in case of specifying same option several times. Signed-off-by: Chengguang Xu <cgxu519@icloud.com> Reviewed-by: Ilya Dryomov <idryomov@gmail.com> Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
Diffstat (limited to 'fs/ceph')
-rw-r--r--fs/ceph/super.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/fs/ceph/super.c b/fs/ceph/super.c
index a62d2a9841dc2..bfc85b22a1908 100644
--- a/fs/ceph/super.c
+++ b/fs/ceph/super.c
@@ -225,6 +225,7 @@ static int parse_fsopt_token(char *c, void *private)
return -ENOMEM;
break;
case Opt_mds_namespace:
+ kfree(fsopt->mds_namespace);
fsopt->mds_namespace = kstrndup(argstr[0].from,
argstr[0].to-argstr[0].from,
GFP_KERNEL);
@@ -232,6 +233,7 @@ static int parse_fsopt_token(char *c, void *private)
return -ENOMEM;
break;
case Opt_fscache_uniq:
+ kfree(fsopt->fscache_uniq);
fsopt->fscache_uniq = kstrndup(argstr[0].from,
argstr[0].to-argstr[0].from,
GFP_KERNEL);