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)
|
||||
{
|
||||
struct zcomp *comp;
|
||||
u64 disksize;
|
||||
|
||||
down_write(&zram->init_lock);
|
||||
|
||||
zram->limit_pages = 0;
|
||||
@ -1722,17 +1719,15 @@ static void zram_reset_device(struct zram *zram)
|
||||
return;
|
||||
}
|
||||
|
||||
comp = zram->comp;
|
||||
disksize = zram->disksize;
|
||||
zram->disksize = 0;
|
||||
|
||||
set_capacity_and_notify(zram->disk, 0);
|
||||
part_stat_set_all(zram->disk->part0, 0);
|
||||
|
||||
/* 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));
|
||||
zcomp_destroy(comp);
|
||||
zcomp_destroy(zram->comp);
|
||||
zram->comp = NULL;
|
||||
reset_bdev(zram);
|
||||
|
||||
up_write(&zram->init_lock);
|
||||
|
Loading…
x
Reference in New Issue
Block a user