Messages in this thread Patch in this message |  | | From | Ming Lei <> | Subject | [PATCH V2 3/4] zram: avoid race between zram_remove and disksize_store | Date | Wed, 20 Oct 2021 09:55:47 +0800 |
| |
After resetting device in zram_remove(), disksize_store still may come and allocate resources again before deleting gendisk, fix the race by resetting zram after del_gendisk() returns. At that time, disksize_store can't come any more.
Reported-by: Luis Chamberlain <mcgrof@kernel.org> Signed-off-by: Ming Lei <ming.lei@redhat.com> --- drivers/block/zram/zram_drv.c | 7 +++++++ 1 file changed, 7 insertions(+)
diff --git a/drivers/block/zram/zram_drv.c b/drivers/block/zram/zram_drv.c index 8883de7aa3d7..6078d1dae44a 100644 --- a/drivers/block/zram/zram_drv.c +++ b/drivers/block/zram/zram_drv.c @@ -2002,6 +2002,13 @@ static int zram_remove(struct zram *zram) /* del_gendisk drains pending reset_store */ WARN_ON_ONCE(claimed && zram->claim); + /* + * disksize store may come between zram_reset_device and del_gendisk, so + * run the last reset for avoiding leak anything allocated in + * disksize_store(). + */ + zram_reset_device(zram); + blk_cleanup_disk(zram->disk); kfree(zram); return 0; -- 2.31.1
|  |