mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-18 03:06:43 +00:00
drivers/block/zram/zram_drv.c: do not keep dangling zcomp pointer after zram reset
We do all reset operations under write lock, so we don't need to save ->disksize and ->comp to stack variables. Another thing is that ->comp is freed during zram reset, but comp pointer is not NULL-ed, so zram keeps the freed pointer value. Link: https://lkml.kernel.org/r/20220824035100.971816-1-senozhatsky@chromium.org Signed-off-by: Sergey Senozhatsky <senozhatsky@chromium.org> Cc: Minchan Kim <minchan@kernel.org> Cc: Nitin Gupta <ngupta@vflare.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
parent
67e139b02d
commit
6d2453c3db
@ -1710,9 +1710,6 @@ out:
|
|||||||
|
|
||||||
static void zram_reset_device(struct zram *zram)
|
static void zram_reset_device(struct zram *zram)
|
||||||
{
|
{
|
||||||
struct zcomp *comp;
|
|
||||||
u64 disksize;
|
|
||||||
|
|
||||||
down_write(&zram->init_lock);
|
down_write(&zram->init_lock);
|
||||||
|
|
||||||
zram->limit_pages = 0;
|
zram->limit_pages = 0;
|
||||||
@ -1722,17 +1719,15 @@ static void zram_reset_device(struct zram *zram)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
comp = zram->comp;
|
|
||||||
disksize = zram->disksize;
|
|
||||||
zram->disksize = 0;
|
|
||||||
|
|
||||||
set_capacity_and_notify(zram->disk, 0);
|
set_capacity_and_notify(zram->disk, 0);
|
||||||
part_stat_set_all(zram->disk->part0, 0);
|
part_stat_set_all(zram->disk->part0, 0);
|
||||||
|
|
||||||
/* I/O operation under all of CPU are done so let's free */
|
/* I/O operation under all of CPU are done so let's free */
|
||||||
zram_meta_free(zram, disksize);
|
zram_meta_free(zram, zram->disksize);
|
||||||
|
zram->disksize = 0;
|
||||||
memset(&zram->stats, 0, sizeof(zram->stats));
|
memset(&zram->stats, 0, sizeof(zram->stats));
|
||||||
zcomp_destroy(comp);
|
zcomp_destroy(zram->comp);
|
||||||
|
zram->comp = NULL;
|
||||||
reset_bdev(zram);
|
reset_bdev(zram);
|
||||||
|
|
||||||
up_write(&zram->init_lock);
|
up_write(&zram->init_lock);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user