From: Sergey Senozhatsky <senozhatsky@chromium.org>
To: haoqin huang <haoqinhuang7@gmail.com>
Cc: Sergey Senozhatsky <senozhatsky@chromium.org>,
Minchan Kim <minchan@kernel.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>,
Jaegeuk Kim <jaegeuk@kernel.org>, Chao Yu <chao@kernel.org>,
linux-f2fs-devel@lists.sourceforge.net
Subject: Re: [PATCH v4 3/4] zram: validate parameters in each backend's setup_params
Date: Tue, 4 Aug 2026 13:42:21 +0900 [thread overview]
Message-ID: <anFspPi023HFlwwE@google.com> (raw)
In-Reply-To: <CAEjiKSkExTnRc77Va-cOSpoNJ4S0i_-r2-iGFyxoSw2mqh1Diw@mail.gmail.com>
On (26/08/03 20:20), haoqin huang wrote:
> On Thu, Jul 30, 2026 at 3:24 PM Sergey Senozhatsky
> <senozhatsky@chromium.org> wrote:
> > > 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:
> >
>
> My bad, completely missed that LZ4HC_MIN_CLEVEL is advisory and the
> library actually accepts 1-2. Will hardcode < 1 in v5.
No worries, that LZ4HC_MIN_CLEVEL thing is difficult to spot.
> Btw, would it make sense to fix LZ4HC_MIN_CLEVEL to 1 in the lz4
> header as a separate cleanup? It seems misleading as-is.
I'm afraid we cannot do that. f2fs uses LZ4HC_MIN_CLEVEL, I assume
compression level is stored per-inode? So if we change LZ4HC_MIN_CLEVEL
then newer f2fs will start accepting compression levels that older kernels
don't support. Cc-ed Jaegeuk and Chao just for visibility.
WARNING: multiple messages have this Message-ID (diff)
From: Sergey Senozhatsky <senozhatsky@chromium.org>
To: haoqin huang <haoqinhuang7@gmail.com>
Cc: Jens Axboe <axboe@kernel.dk>, Minchan Kim <minchan@kernel.org>,
linux-kernel@vger.kernel.org,
linux-f2fs-devel@lists.sourceforge.net,
linux-block@vger.kernel.org,
Sergey Senozhatsky <senozhatsky@chromium.org>,
Nick Terrell <terrelln@fb.com>, David Sterba <dsterba@suse.com>,
Jaegeuk Kim <jaegeuk@kernel.org>,
Andrew Morton <akpm@linux-foundation.org>,
Rongwei Wang <zigiwang@tencent.com>,
Haoqin Huang <haoqinhuang@tencent.com>
Subject: Re: [f2fs-dev] [PATCH v4 3/4] zram: validate parameters in each backend's setup_params
Date: Tue, 4 Aug 2026 13:42:21 +0900 [thread overview]
Message-ID: <anFspPi023HFlwwE@google.com> (raw)
In-Reply-To: <CAEjiKSkExTnRc77Va-cOSpoNJ4S0i_-r2-iGFyxoSw2mqh1Diw@mail.gmail.com>
On (26/08/03 20:20), haoqin huang wrote:
> On Thu, Jul 30, 2026 at 3:24 PM Sergey Senozhatsky
> <senozhatsky@chromium.org> wrote:
> > > 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:
> >
>
> My bad, completely missed that LZ4HC_MIN_CLEVEL is advisory and the
> library actually accepts 1-2. Will hardcode < 1 in v5.
No worries, that LZ4HC_MIN_CLEVEL thing is difficult to spot.
> Btw, would it make sense to fix LZ4HC_MIN_CLEVEL to 1 in the lz4
> header as a separate cleanup? It seems misleading as-is.
I'm afraid we cannot do that. f2fs uses LZ4HC_MIN_CLEVEL, I assume
compression level is stored per-inode? So if we change LZ4HC_MIN_CLEVEL
then newer f2fs will start accepting compression levels that older kernels
don't support. Cc-ed Jaegeuk and Chao just for visibility.
_______________________________________________
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel
next prev parent reply other threads:[~2026-08-04 4:42 UTC|newest]
Thread overview: 83+ 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
2026-08-03 12:20 ` haoqin huang
2026-08-04 4:42 ` Sergey Senozhatsky [this message]
2026-08-04 4:42 ` [f2fs-dev] " Sergey Senozhatsky
2026-08-05 1:26 ` Jaegeuk Kim via Linux-f2fs-devel
2026-08-05 1:26 ` Jaegeuk Kim
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
2026-08-03 14:12 ` [PATCH v5 0/4] zram: fix zstd error paths and add parameter validation Haoqin Huang
2026-08-03 14:12 ` [PATCH v5 1/4] zram: do not release zstd global params from error paths Haoqin Huang
2026-08-03 14:12 ` [PATCH v5 2/4] zram: reject zero-size dictionary Haoqin Huang
2026-08-04 5:32 ` Sergey Senozhatsky
2026-08-04 7:15 ` haoqin huang
2026-08-03 14:12 ` [PATCH v5 3/4] zram: validate parameters in each backend's setup_params Haoqin Huang
2026-08-04 5:36 ` Sergey Senozhatsky
2026-08-04 7:02 ` haoqin huang
2026-08-04 8:30 ` Sergey Senozhatsky
2026-08-04 5:48 ` Sergey Senozhatsky
2026-08-04 7:13 ` haoqin huang
2026-08-04 8:28 ` Sergey Senozhatsky
2026-08-03 14:12 ` [PATCH v5 4/4] zram: reset per-priority params when changing algorithm before init Haoqin Huang
2026-08-04 9:38 ` [PATCH v6 0/5] zram: fix zstd error paths and add parameter validation Haoqin Huang
2026-08-04 9:38 ` [PATCH v6 1/5] zram: do not release zstd global params from error paths Haoqin Huang
2026-08-04 9:38 ` [PATCH v6 2/5] zram: reject zero-size dictionary Haoqin Huang
2026-08-04 9:38 ` [PATCH v6 3/5] zram: add pr_fmt to backend files Haoqin Huang
2026-08-04 9:38 ` [PATCH v6 4/5] zram: validate parameters in each backend's setup_params Haoqin Huang
2026-08-04 9:38 ` [PATCH v6 5/5] zram: reset per-priority params when changing algorithm before init Haoqin Huang
2026-08-04 9:53 ` [PATCH v6 0/5] zram: fix zstd error paths and add parameter validation Sergey Senozhatsky
2026-08-04 9:55 ` Sergey Senozhatsky
2026-08-04 19:55 ` Andrew Morton
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=anFspPi023HFlwwE@google.com \
--to=senozhatsky@chromium.org \
--cc=akpm@linux-foundation.org \
--cc=axboe@kernel.dk \
--cc=chao@kernel.org \
--cc=dsterba@suse.com \
--cc=haoqinhuang7@gmail.com \
--cc=haoqinhuang@tencent.com \
--cc=jaegeuk@kernel.org \
--cc=linux-block@vger.kernel.org \
--cc=linux-f2fs-devel@lists.sourceforge.net \
--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.