On Wed, Oct 30, 2013 at 04:42:56AM +0530, Rashika Kheria wrote: > As suggested by 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 therefor incremented but never decremented." > > Hence, this patch introduces a call to bdput() to decrement the variable after usage. > > Cc: stable@xxxxxxxxxxxxxxx > Signed-off-by: Rashika Kheria <rashika.kheria@xxxxxxxxx> > --- > > This revision fixes the following issues of the previous revision- > Handle more error cases > > drivers/staging/zram/zram_drv.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/drivers/staging/zram/zram_drv.c b/drivers/staging/zram/zram_drv.c > index d640a8f..592e760 100644 > --- a/drivers/staging/zram/zram_drv.c > +++ b/drivers/staging/zram/zram_drv.c > @@ -664,6 +664,9 @@ static ssize_t reset_store(struct device *dev, > > /* Make sure all pending I/O is finished */ > fsync_bdev(bdev); > + bdput(bdev); > + bdput(bdev->bd_holders); > + bdput(do_reset); I meant it. diff --git a/drivers/staging/zram/zram_drv.c b/drivers/staging/zram/zram_drv.c index e77fb6e..32f9a44 100644 --- a/drivers/staging/zram/zram_drv.c +++ b/drivers/staging/zram/zram_drv.c @@ -621,22 +621,30 @@ static ssize_t reset_store(struct device *dev, bdev = bdget_disk(zram->disk, 0); /* 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 */ - if (bdev) - fsync_bdev(bdev); + fsync_bdev(bdev); + bdput(bdev); zram_reset_device(zram); return len; + +out: + bdput(bdev); + return ret; } static void __zram_make_request(struct zram *zram, struct bio *bio, int rw) -- Kind regards, Minchan Kim -- To unsubscribe from this list: send the line "unsubscribe stable" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html