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 --- 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.385.gd3acb90ef8-goog