[PATCH 03/10] zram: zstd: do not allocate empty C/D-dictionaries

From: Sergey Senozhatsky

Date: Mon Oct 05 2026 - 08:22:53 EST


Do not zstd_create_cdict_byreference() / zstd_create_ddict_byreference()
C/D dictionaries when no dictionary was provided in the first place,
because zstd still allocates internal memory for such calls (~96 KB at
default level 3, and ~160 KB at levels 9+ on x86_64).

Signed-off-by: Sergey Senozhatsky <senozhatsky@xxxxxxxxxxxx>
---
drivers/block/zram/backend_zstd.c | 3 +++
1 file changed, 3 insertions(+)

diff --git a/drivers/block/zram/backend_zstd.c b/drivers/block/zram/backend_zstd.c
index 127976b5455b..b367049f131d 100644
--- a/drivers/block/zram/backend_zstd.c
+++ b/drivers/block/zram/backend_zstd.c
@@ -76,6 +76,9 @@ static int zstd_setup_params(struct zcomp_params *params)
prm = zstd_get_cparams(params->level, PAGE_SIZE,
params->dict_sz);

+ if (!params->dict || !params->dict_sz)
+ return 0;
+
zp->cdict = zstd_create_cdict_byreference(params->dict,
params->dict_sz,
prm,
--
2.56.0.rc1.315.gc6ed9934b7-goog