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

Haoqin Huang <[email protected]> Thu, 30 Jul 2026 10:52:35 +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).

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

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