From 14f5afdab8626c9b9ea3498cc214e6a85504c63b Mon Sep 17 00:00:00 2001 From: Sergey Senozhatsky Date: Tue, 10 Mar 2026 15:01:41 +0900 Subject: [PATCH] zram: do not permit params change after init First, algorithm_params_store(), like any sysfs handler, should grab device init lock. Second, like any write() sysfs handler, it should grab device init lock in exclusive mode. Third, it should not permit change of algos' parameters after device init, as this doesn't make sense - we cannot compress with one C/D dict and then just change C/D dict to a different one, for example. Fixes: 4eac932103a5d ("zram: introduce algorithm_params device attribute") Cc: gao xu Signed-off-by: Sergey Senozhatsky Acked-by: Brian Geffon --- drivers/block/zram/zram_drv.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/drivers/block/zram/zram_drv.c b/drivers/block/zram/zram_drv.c index a324ede6206d..338739b08331 100644 --- a/drivers/block/zram/zram_drv.c +++ b/drivers/block/zram/zram_drv.c @@ -1783,6 +1783,10 @@ static ssize_t algorithm_params_store(struct device *dev, if (prio < ZRAM_PRIMARY_COMP || prio >= ZRAM_MAX_COMPS) return -EINVAL; + guard(rwsem_write)(&zram->dev_lock); + if (init_done(zram)) + return -EBUSY; + ret = comp_params_store(zram, prio, level, dict_path, &deflate_params); return ret ? ret : len; }