From: Sergey Senozhatsky <senozhatsky@chromium.org>
To: Haoqin Huang <haoqinhuang7@gmail.com>
Cc: Minchan Kim <minchan@kernel.org>,
Sergey Senozhatsky <senozhatsky@chromium.org>,
Jens Axboe <axboe@kernel.dk>, Nick Terrell <terrelln@fb.com>,
David Sterba <dsterba@suse.com>,
Andrew Morton <akpm@linux-foundation.org>,
linux-kernel@vger.kernel.org, linux-block@vger.kernel.org,
Haoqin Huang <haoqinhuang@tencent.com>,
Rongwei Wang <zigiwang@tencent.com>
Subject: Re: [PATCH v4 3/4] zram: validate parameters in each backend's setup_params
Date: Thu, 30 Jul 2026 16:24:17 +0900 [thread overview]
Message-ID: <amr3P_4zxX2w7ZNR@google.com> (raw)
In-Reply-To: <20260730060133.80233-4-haoqinhuang7@gmail.com>
On (26/07/30 14:01), Haoqin Huang wrote:
[..]
> static int deflate_setup_params(struct zcomp_params *params)
> {
> + if (params->dict_sz) {
> + pr_err("deflate: dictionary is not supported\n");
> + return -EOPNOTSUPP;
> + }
> if (params->level == ZCOMP_PARAM_NOT_SET)
> params->level = Z_DEFAULT_COMPRESSION;
> + else if (params->level < Z_DEFAULT_COMPRESSION ||
> + params->level > Z_BEST_COMPRESSION) {
> + pr_err("deflate: invalid compression level %d\n", params->level);
> + return -EINVAL;
> + }
> if (params->deflate.winbits == ZCOMP_PARAM_NOT_SET)
> params->deflate.winbits = DEFLATE_DEF_WINBITS;
This will conflict with winbits validation change that we landed
yesterday. Can I trouble you with a rebase request (either on top
of linux-next, when winbits patch hits it, or on top of Andrew's mm
tree)?
[..]
> diff --git a/drivers/block/zram/backend_lz4hc.c b/drivers/block/zram/backend_lz4hc.c
> index f6a336acfe20..5d551d165213 100644
> --- a/drivers/block/zram/backend_lz4hc.c
> +++ b/drivers/block/zram/backend_lz4hc.c
> @@ -20,6 +20,11 @@ static int lz4hc_setup_params(struct zcomp_params *params)
> {
> if (params->level == ZCOMP_PARAM_NOT_SET)
> params->level = LZ4HC_DEFAULT_CLEVEL;
> + else if (params->level < LZ4HC_MIN_CLEVEL ||
> + params->level > LZ4HC_MAX_CLEVEL) {
> + pr_err("lz4hc: invalid compression level %d\n", params->level);
> + return -EINVAL;
> + }
So... lib/lz4/lz4hc_compress.c supports levels 1 and 2. However,
LZ4HC_MIN_CLEVEL is set to 3, but clearly the compression library
supports levels lower than LZ4HC_MIN_CLEVEL. In fact, LZ4HC_MIN_CLEVEL
is never used in the lz4 code. Maybe here we need to just hardcode
"< 1" and put a comment:
} else if (params->level < 1 || params->level > LZ4HC_MAX_CLEVEL) {
/*
* Not LZ4HC_MIN_CLEVEL: that constant is advisory, and
* LZ4HC_compress_generic() only clamps levels below 1.
* Levels 1-2 are valid.
*/
pr_err("lz4hc: invalid compression level %d\n", params->level);
return -EINVAL;
}
[..]
> diff --git a/drivers/block/zram/backend_zstd.c b/drivers/block/zram/backend_zstd.c
> index 2584f47c9b3c..4d19d6089f13 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 < zstd_min_clevel() ||
> + params->level > zstd_max_clevel()) {
> + pr_err("zstd: invalid compression level %d\n", params->level);
> + goto error;
Should we also remove "zstd_release_params(params);" from here?
Same reason as with zstd_create().
next prev parent reply other threads:[~2026-07-30 7:24 UTC|newest]
Thread overview: 56+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-06-27 7:02 [PATCH 1/3] zram: fix zstd dict use-after-free on per-CPU error path Haoqin Huang
2026-06-27 7:02 ` [PATCH 2/3] zram: add per-backend capability flags and validate parameters early Haoqin Huang
2026-07-24 5:27 ` Sergey Senozhatsky
2026-07-27 16:50 ` haoqin huang
2026-07-28 1:19 ` Sergey Senozhatsky
2026-07-28 9:07 ` haoqin huang
2026-07-28 1:27 ` Sergey Senozhatsky
2026-07-28 9:09 ` haoqin huang
2026-06-27 7:02 ` [PATCH 3/3] zram: reset per-priority params when changing algorithm before init Haoqin Huang
2026-07-24 5:19 ` Sergey Senozhatsky
2026-07-07 7:19 ` [PATCH 1/3] zram: fix zstd dict use-after-free on per-CPU error path Sergey Senozhatsky
2026-07-24 5:17 ` Sergey Senozhatsky
2026-07-27 16:06 ` haoqin huang
2026-07-28 1:21 ` Sergey Senozhatsky
2026-07-28 9:29 ` [PATCH v2 1/5] zram: fix early release of global cdict/ddict in " Haoqin Huang
2026-07-28 9:29 ` [PATCH v2 2/5] zram: make dict update in comp_params_store() atomic Haoqin Huang
2026-07-29 2:30 ` Sergey Senozhatsky
2026-07-29 4:06 ` haoqin huang
2026-07-29 4:16 ` Sergey Senozhatsky
2026-07-29 4:25 ` haoqin huang
2026-07-28 9:29 ` [PATCH v2 3/5] zstd: move ZSTD_MAX_CLEVEL to zstd_lib.h Haoqin Huang
2026-07-29 3:03 ` Sergey Senozhatsky
2026-07-29 4:16 ` haoqin huang
2026-07-29 4:22 ` Sergey Senozhatsky
2026-07-29 4:32 ` haoqin huang
2026-07-29 4:49 ` Sergey Senozhatsky
2026-07-30 2:48 ` haoqin huang
2026-07-28 9:29 ` [PATCH v2 4/5] zram: add per-backend caps and validate parameters early Haoqin Huang
2026-07-29 2:26 ` Sergey Senozhatsky
2026-07-29 3:53 ` haoqin huang
2026-07-28 9:29 ` [PATCH v2 5/5] zram: reset per-priority params when changing algorithm before init Haoqin Huang
2026-07-29 0:34 ` [PATCH v2 1/5] zram: fix early release of global cdict/ddict in per-CPU error path Andrew Morton
2026-07-29 2:49 ` Sergey Senozhatsky
2026-07-29 3:33 ` haoqin huang
2026-07-29 2:20 ` Sergey Senozhatsky
2026-07-29 3:40 ` haoqin huang
2026-07-29 2:40 ` Sergey Senozhatsky
2026-07-30 2:52 ` [PATCH v3 0/5] zram: fix zstd per-CPU error path and add parameter validation Haoqin Huang
2026-07-30 2:52 ` [PATCH v3 1/5] zram: do not release zstd params in per-CPU error path Haoqin Huang
2026-07-30 2:52 ` [PATCH v3 2/5] zram: reject zero-size dictionary Haoqin Huang
2026-07-30 2:52 ` [PATCH v3 3/5] zram: add level validation in zstd setup_params Haoqin Huang
2026-07-30 3:10 ` Sergey Senozhatsky
2026-07-30 5:55 ` haoqin huang
2026-07-30 2:52 ` [PATCH v3 4/5] zram: add per-backend caps and validate parameters early Haoqin Huang
2026-07-30 3:14 ` Sergey Senozhatsky
2026-07-30 5:57 ` haoqin huang
2026-07-30 2:52 ` [PATCH v3 5/5] zram: reset per-priority params when changing algorithm before init Haoqin Huang
2026-07-30 6:01 ` [PATCH v4 0/4] zram: fix zstd per-CPU error path and add parameter validation Haoqin Huang
2026-07-30 6:01 ` [PATCH v4 1/4] zram: do not release zstd params in per-CPU error path Haoqin Huang
2026-07-30 6:01 ` [PATCH v4 2/4] zram: reject zero-size dictionary Haoqin Huang
2026-07-30 7:00 ` Sergey Senozhatsky
2026-07-30 6:01 ` [PATCH v4 3/4] zram: validate parameters in each backend's setup_params Haoqin Huang
2026-07-30 7:24 ` Sergey Senozhatsky [this message]
2026-07-30 7:35 ` Sergey Senozhatsky
2026-07-30 6:01 ` [PATCH v4 4/4] zram: reset per-priority params when changing algorithm before init Haoqin Huang
2026-07-30 7:28 ` Sergey Senozhatsky
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=amr3P_4zxX2w7ZNR@google.com \
--to=senozhatsky@chromium.org \
--cc=akpm@linux-foundation.org \
--cc=axboe@kernel.dk \
--cc=dsterba@suse.com \
--cc=haoqinhuang7@gmail.com \
--cc=haoqinhuang@tencent.com \
--cc=linux-block@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=minchan@kernel.org \
--cc=terrelln@fb.com \
--cc=zigiwang@tencent.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.