[PATCH v4 0/4] zram: fix zstd per-CPU error path and add parameter validation

From: Haoqin Huang

Date: Thu Jul 30 2026 - 02:03:09 EST


From: Haoqin Huang <haoqinhuang@xxxxxxxxxxx>

Patch 1 removes zstd_release_params() from the per-CPU zstd_create()
error path since per-CPU callbacks should not free global resources.

Patch 2 rejects zero-size dictionaries and prints an error on dict
load failure (currently errors are silently swallowed).

Patch 3 moves parameter validation into each backend's .setup_params():
dict/level support checks for backends that don't support them, and
level bounds checking for those that do (zstd uses zstd_min_clevel()/
zstd_max_clevel(), lz4hc uses LZ4HC_MIN/MAX_CLEVEL, etc.).

Patch 4 resets per-priority params on algorithm change before init.

Changes since v3:
- Patch 3-4: dropped the generic caps + zcomp_validate_params()
approach in favor of per-backend .setup_params() validation,
keeping zcomp.c free of any library headers

v3: https://lore.kernel.org/all/20260730025240.17724-1-haoqinhuang7@xxxxxxxxx/

Haoqin Huang (4):
zram: do not release zstd params in per-CPU error path
zram: reject zero-size dictionary
zram: validate parameters in each backend's setup_params
zram: reset per-priority params when changing algorithm before init

drivers/block/zram/backend_842.c | 8 ++++++++
drivers/block/zram/backend_deflate.c | 9 +++++++++
drivers/block/zram/backend_lz4.c | 5 +++++
drivers/block/zram/backend_lz4hc.c | 5 +++++
drivers/block/zram/backend_lzo.c | 8 ++++++++
drivers/block/zram/backend_lzorle.c | 8 ++++++++
drivers/block/zram/backend_zstd.c | 6 +++++-
drivers/block/zram/zram_drv.c | 8 +++++++-
8 files changed, 55 insertions(+), 2 deletions(-)

--
2.43.7