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

From: Haoqin Huang

Date: Wed Jul 29 2026 - 22:58:14 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).

Patches 3-4 add parameter validation: per-backend level bounds
checking in zstd_setup_params() (patch 3), and a generic
zcomp_validate_params() with per-backend caps to reject unsupported
dict/level parameters before storing (patch 4).

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

Changes since v2:
- Patch 1: removed "fix" from subject, reworded commit message
- Patch 2: dropped atomic dict swap; kernel_read_file() already
rejects empty files, so just use sz <= 0 and add pr_err
- Patch 3: dropped ZSTD_MAX_CLEVEL header move, validate in
setup_params using runtime zstd_max_clevel() instead
- Patch 4: merged validate functions into zcomp_validate_params()
with internal pr_err for specific error messages; sentinel
level_max=-1 for zstd

v2: https://lore.kernel.org/all/20260728092935.31139-1-haoqinhuang7@xxxxxxxxx/

Haoqin Huang (5):
zram: do not release zstd params in per-CPU error path
zram: reject zero-size dictionary
zram: add level validation in zstd setup_params
zram: add per-backend caps and validate parameters early
zram: reset per-priority params when changing algorithm before init

drivers/block/zram/backend_842.c | 1 +
drivers/block/zram/backend_deflate.c | 3 +++
drivers/block/zram/backend_lz4.c | 3 +++
drivers/block/zram/backend_lz4hc.c | 3 +++
drivers/block/zram/backend_lzo.c | 1 +
drivers/block/zram/backend_lzorle.c | 1 +
drivers/block/zram/backend_zstd.c | 9 ++++++++-
drivers/block/zram/zcomp.c | 27 +++++++++++++++++++++++++++
drivers/block/zram/zcomp.h | 7 +++++++
drivers/block/zram/zram_drv.c | 15 ++++++++++++++-
10 files changed, 68 insertions(+), 2 deletions(-)

--
2.43.7