Messages in this thread | | | Date | Wed, 30 Oct 2013 11:42:07 +0100 | From | Jerome Marchand <> | Subject | Re: [PATCH v7 1/3] Staging: zram: Fix access of NULL pointer |
| |
On 10/30/2013 12:10 AM, Rashika Kheria wrote: > This patch fixes the bug in reset_store caused by accessing NULL pointer. > > The bdev gets its value from bdget_disk() which could fail when memory > pressure is severe and hence can return NULL because allocation of > inode in bdget could fail. > > Hence, this patch introduces a check for bdev to prevent reference to a > NULL pointer in the later part of the code. It also removes unnecessary > check of bdev for fsync_bdev(). > > Cc: stable@vger.kernel.org > Signed-off-by: Rashika Kheria <rashika.kheria@gmail.com> Acked-by: Jerome Marchand <jmarchan@redhat.com>
> --- > > This patch fixes the following issues of the previous revision- > Better Description > > drivers/staging/zram/zram_drv.c | 6 ++++-- > 1 file changed, 4 insertions(+), 2 deletions(-) > > diff --git a/drivers/staging/zram/zram_drv.c b/drivers/staging/zram/zram_drv.c > index 2c4ed52..d640a8f 100644 > --- a/drivers/staging/zram/zram_drv.c > +++ b/drivers/staging/zram/zram_drv.c > @@ -648,6 +648,9 @@ static ssize_t reset_store(struct device *dev, > zram = dev_to_zram(dev); > bdev = bdget_disk(zram->disk, 0); > > + if (!bdev) > + return -EBUSY; > + > /* Do not reset an active device! */ > if (bdev->bd_holders) > return -EBUSY; > @@ -660,8 +663,7 @@ static ssize_t reset_store(struct device *dev, > return -EINVAL; > > /* Make sure all pending I/O is finished */ > - if (bdev) > - fsync_bdev(bdev); > + fsync_bdev(bdev); > > zram_reset_device(zram, true); > return len; >
| |