From: Haoqin Huang zstd_setup_params() creates global cdict and ddict stored in params->drv_data, shared across all per-CPU contexts. When a per-CPU zstd_create() failed, its error path called zstd_release_params() which freed those shared objects while other per-CPU contexts might already hold references to them. Remove the premature zstd_release_params() from the per-CPU error path, the global cdict/ddict are properly released later by zstd_release_params(), called from zcomp_init()'s cleanup or from zcomp_destroy(). Fixes: 6a559ecd6e7e ("zram: add dictionary support to zstd backend") Signed-off-by: Haoqin Huang Reviewed-by: Rongwei Wang --- drivers/block/zram/backend_zstd.c | 1 - 1 file changed, 1 deletion(-) diff --git a/drivers/block/zram/backend_zstd.c b/drivers/block/zram/backend_zstd.c index d00b548056dc..2584f47c9b3c 100644 --- a/drivers/block/zram/backend_zstd.c +++ b/drivers/block/zram/backend_zstd.c @@ -161,7 +161,6 @@ static int zstd_create(struct zcomp_params *params, struct zcomp_ctx *ctx) return 0; error: - zstd_release_params(params); zstd_destroy(ctx); return -EINVAL; } -- 2.43.7