diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2018-03-02 13:05:10 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2018-03-02 13:05:10 -0500 |
commit | 2833419a629d2d0eeb46f97c529f1057db7537b2 (patch) | |
tree | f628cf34dc2ba1edd8a6194a0e3ebfdfed1f7e08 /net | |
parent | fb6d47a592678ad1f053d9584b4f7dc4095a5c53 (diff) | |
parent | 1c789249578895bb14ab62b4327306439b754857 (diff) |
Merge tag 'ceph-for-4.16-rc4' of git://github.com/ceph/ceph-client
Pull ceph fixes from Ilya Dryomov:
"A cap handling fix from Zhi that ensures that metadata writeback isn't
delayed and three error path memory leak fixups from Chengguang"
* tag 'ceph-for-4.16-rc4' of git://github.com/ceph/ceph-client:
ceph: fix potential memory leak in init_caches()
ceph: fix dentry leak when failing to init debugfs
libceph, ceph: avoid memory leak when specifying same option several times
ceph: flush dirty caps of unlinked inode ASAP
Diffstat (limited to 'net')
-rw-r--r-- | net/ceph/ceph_common.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/net/ceph/ceph_common.c b/net/ceph/ceph_common.c index 1e492ef2a33d..4d4c82229e9e 100644 --- a/net/ceph/ceph_common.c +++ b/net/ceph/ceph_common.c | |||
@@ -418,6 +418,7 @@ ceph_parse_options(char *options, const char *dev_name, | |||
418 | opt->flags |= CEPH_OPT_FSID; | 418 | opt->flags |= CEPH_OPT_FSID; |
419 | break; | 419 | break; |
420 | case Opt_name: | 420 | case Opt_name: |
421 | kfree(opt->name); | ||
421 | opt->name = kstrndup(argstr[0].from, | 422 | opt->name = kstrndup(argstr[0].from, |
422 | argstr[0].to-argstr[0].from, | 423 | argstr[0].to-argstr[0].from, |
423 | GFP_KERNEL); | 424 | GFP_KERNEL); |
@@ -427,6 +428,9 @@ ceph_parse_options(char *options, const char *dev_name, | |||
427 | } | 428 | } |
428 | break; | 429 | break; |
429 | case Opt_secret: | 430 | case Opt_secret: |
431 | ceph_crypto_key_destroy(opt->key); | ||
432 | kfree(opt->key); | ||
433 | |||
430 | opt->key = kzalloc(sizeof(*opt->key), GFP_KERNEL); | 434 | opt->key = kzalloc(sizeof(*opt->key), GFP_KERNEL); |
431 | if (!opt->key) { | 435 | if (!opt->key) { |
432 | err = -ENOMEM; | 436 | err = -ENOMEM; |
@@ -437,6 +441,9 @@ ceph_parse_options(char *options, const char *dev_name, | |||
437 | goto out; | 441 | goto out; |
438 | break; | 442 | break; |
439 | case Opt_key: | 443 | case Opt_key: |
444 | ceph_crypto_key_destroy(opt->key); | ||
445 | kfree(opt->key); | ||
446 | |||
440 | opt->key = kzalloc(sizeof(*opt->key), GFP_KERNEL); | 447 | opt->key = kzalloc(sizeof(*opt->key), GFP_KERNEL); |
441 | if (!opt->key) { | 448 | if (!opt->key) { |
442 | err = -ENOMEM; | 449 | err = -ENOMEM; |