mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-12 05:48:39 +08:00
libceph, ceph: avoid memory leak when specifying same option several times
[ Upstream commit 937441f3a3
]
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>
Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
682def9142
commit
e080e814de
@ -224,6 +224,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);
|
||||
@ -231,6 +232,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);
|
||||
|
@ -418,11 +418,15 @@ ceph_parse_options(char *options, const char *dev_name,
|
||||
opt->flags |= CEPH_OPT_FSID;
|
||||
break;
|
||||
case Opt_name:
|
||||
kfree(opt->name);
|
||||
opt->name = kstrndup(argstr[0].from,
|
||||
argstr[0].to-argstr[0].from,
|
||||
GFP_KERNEL);
|
||||
break;
|
||||
case Opt_secret:
|
||||
ceph_crypto_key_destroy(opt->key);
|
||||
kfree(opt->key);
|
||||
|
||||
opt->key = kzalloc(sizeof(*opt->key), GFP_KERNEL);
|
||||
if (!opt->key) {
|
||||
err = -ENOMEM;
|
||||
@ -433,6 +437,9 @@ ceph_parse_options(char *options, const char *dev_name,
|
||||
goto out;
|
||||
break;
|
||||
case Opt_key:
|
||||
ceph_crypto_key_destroy(opt->key);
|
||||
kfree(opt->key);
|
||||
|
||||
opt->key = kzalloc(sizeof(*opt->key), GFP_KERNEL);
|
||||
if (!opt->key) {
|
||||
err = -ENOMEM;
|
||||
|
Loading…
Reference in New Issue
Block a user