Commit 1b672224 authored by Rashika Kheria's avatar Rashika Kheria Committed by Greg Kroah-Hartman

Staging: zram: Fix memory leak by refcount mismatch

As suggested by Minchan Kim and Jerome Marchand "The code in reset_store
get the block device (bdget_disk()) but it does not put it (bdput()) when
it's done using it. The usage count is therefore incremented but never

This patch also puts bdput() for all error cases.
Acked-by: default avatarMinchan Kim <>
Acked-by: default avatarJerome Marchand <>
Signed-off-by: default avatarRashika Kheria <>
Signed-off-by: default avatarGreg Kroah-Hartman <>
parent 9df68292
......@@ -652,21 +652,30 @@ static ssize_t reset_store(struct device *dev,
return -ENOMEM;
/* Do not reset an active device! */
if (bdev->bd_holders)
return -EBUSY;
if (bdev->bd_holders) {
ret = -EBUSY;
goto out;
ret = kstrtou16(buf, 10, &do_reset);
if (ret)
return ret;
goto out;
if (!do_reset)
return -EINVAL;
if (!do_reset) {
ret = -EINVAL;
goto out;
/* Make sure all pending I/O is finished */
zram_reset_device(zram, true);
return len;
return ret;
static void __zram_make_request(struct zram *zram, struct bio *bio, int rw)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment