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

Haoqin Huang <[email protected]> Thu, 30 Jul 2026 14:01:29 +0800
Newsgroups org.kernel.vger.linux-block,org.kernel.vger.linux-kernel
Message-ID <[email protected]>
From: Haoqin Huang <[email protected]>

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/[email protected]/

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