2014-10-30 05:42:12

by Al Viro

[permalink] [raw]
Subject: [PATCH] fix a leak in bch_cached_dev_run()

Signed-off-by: Al Viro <[email protected]>

diff --git a/drivers/md/bcache/super.c b/drivers/md/bcache/super.c
--- a/drivers/md/bcache/super.c
+++ b/drivers/md/bcache/super.c
@@ -878,8 +878,11 @@ void bch_cached_dev_run(struct cached_dev *dc)
buf[SB_LABEL_SIZE] = '\0';
env[2] = kasprintf(GFP_KERNEL, "CACHED_LABEL=%s", buf);

- if (atomic_xchg(&dc->running, 1))
+ if (atomic_xchg(&dc->running, 1)) {
+ kfree(env[1]);
+ kfree(env[2]);
return;
+ }

if (!d->c &&
BDEV_STATE(&dc->sb) != BDEV_STATE_NONE) {


2014-11-01 20:36:19

by Kent Overstreet

[permalink] [raw]
Subject: Re: [PATCH] fix a leak in bch_cached_dev_run()

On Thu, Oct 30, 2014 at 05:42:09AM +0000, Al Viro wrote:
> Signed-off-by: Al Viro <[email protected]>
>
> diff --git a/drivers/md/bcache/super.c b/drivers/md/bcache/super.c
> --- a/drivers/md/bcache/super.c
> +++ b/drivers/md/bcache/super.c
> @@ -878,8 +878,11 @@ void bch_cached_dev_run(struct cached_dev *dc)
> buf[SB_LABEL_SIZE] = '\0';
> env[2] = kasprintf(GFP_KERNEL, "CACHED_LABEL=%s", buf);
>
> - if (atomic_xchg(&dc->running, 1))
> + if (atomic_xchg(&dc->running, 1)) {
> + kfree(env[1]);
> + kfree(env[2]);
> return;
> + }
>
> if (!d->c &&
> BDEV_STATE(&dc->sb) != BDEV_STATE_NONE) {

Thanks, applied