[PATCH v3 3/5] zram: add level validation in zstd setup_params
Haoqin Huang <[email protected]> Thu, 30 Jul 2026 10:52:38 +0800
| Newsgroups | org.kernel.vger.linux-block,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
From: Haoqin Huang <[email protected]> zstd_setup_params() currently accepts any level and silently clamps it via zstd_get_params(). Add explicit bounds checking using zstd_max_clevel() to reject out-of-range levels early with an error message. Since zstd_max_clevel() is a runtime function, the check is done here rather than in the generic validation path. Signed-off-by: Haoqin Huang <[email protected]> Signed-off-by: Rongwei Wang <[email protected]> --- drivers/block/zram/backend_zstd.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/drivers/block/zram/backend_zstd.c b/drivers/block/zram/backend_zstd.c index 2584f47c9b3c..6febb366f76e 100644 --- a/drivers/block/zram/backend_zstd.c +++ b/drivers/block/zram/backend_zstd.c @@ -60,6 +60,11 @@ static int zstd_setup_params(struct zcomp_params *params) params->drv_data = zp; if (params->level == ZCOMP_PARAM_NOT_SET) params->level = zstd_default_clevel(); + else if (params->level < -(int)ZSTD_TARGETLENGTH_MAX || + params->level > zstd_max_clevel()) { + pr_err("zstd: invalid compression level %d\n", params->level); + goto error; + } zp->cprm = zstd_get_params(params->level, PAGE_SIZE); -- 2.43.7