diff options
author | Al Viro <viro@ZenIV.linux.org.uk> | 2015-11-29 20:20:59 -0500 |
---|---|---|
committer | Jens Axboe <axboe@fb.com> | 2015-12-30 22:23:10 -0500 |
commit | 4d4d8573a8451acc9f01cbea24b7e55f04a252fe (patch) | |
tree | c1d708fe2ec8d3b7b2cf9c9beb2df46490aaa79c | |
parent | fecaee6f20ee122ad75402c53d8278f9bb142ddc (diff) |
bcache: fix a leak in bch_cached_dev_run()
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Tested-by: Joshua Schmid <jschmid@suse.com>
Tested-by: Eric Wheeler <bcache@linux.ewheeler.net>
Cc: Kent Overstreet <kmo@daterainc.com>
Cc: stable@vger.kernel.org
Signed-off-by: Jens Axboe <axboe@fb.com>
-rw-r--r-- | drivers/md/bcache/super.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/md/bcache/super.c b/drivers/md/bcache/super.c index 383f06028a0a..43e911e4e8d0 100644 --- a/drivers/md/bcache/super.c +++ b/drivers/md/bcache/super.c | |||
@@ -849,8 +849,11 @@ void bch_cached_dev_run(struct cached_dev *dc) | |||
849 | buf[SB_LABEL_SIZE] = '\0'; | 849 | buf[SB_LABEL_SIZE] = '\0'; |
850 | env[2] = kasprintf(GFP_KERNEL, "CACHED_LABEL=%s", buf); | 850 | env[2] = kasprintf(GFP_KERNEL, "CACHED_LABEL=%s", buf); |
851 | 851 | ||
852 | if (atomic_xchg(&dc->running, 1)) | 852 | if (atomic_xchg(&dc->running, 1)) { |
853 | kfree(env[1]); | ||
854 | kfree(env[2]); | ||
853 | return; | 855 | return; |
856 | } | ||
854 | 857 | ||
855 | if (!d->c && | 858 | if (!d->c && |
856 | BDEV_STATE(&dc->sb) != BDEV_STATE_NONE) { | 859 | BDEV_STATE(&dc->sb) != BDEV_STATE_NONE) { |