aboutsummaryrefslogtreecommitdiffstats
path: root/crypto/zlib.c
diff options
context:
space:
mode:
Diffstat (limited to 'crypto/zlib.c')
-rw-r--r--crypto/zlib.c18
1 files changed, 11 insertions, 7 deletions
diff --git a/crypto/zlib.c b/crypto/zlib.c
index 739b8fca4cea..d11d761a5e41 100644
--- a/crypto/zlib.c
+++ b/crypto/zlib.c
@@ -85,6 +85,7 @@ static int zlib_compress_setup(struct crypto_pcomp *tfm, void *params,
85 struct zlib_ctx *ctx = crypto_tfm_ctx(crypto_pcomp_tfm(tfm)); 85 struct zlib_ctx *ctx = crypto_tfm_ctx(crypto_pcomp_tfm(tfm));
86 struct z_stream_s *stream = &ctx->comp_stream; 86 struct z_stream_s *stream = &ctx->comp_stream;
87 struct nlattr *tb[ZLIB_COMP_MAX + 1]; 87 struct nlattr *tb[ZLIB_COMP_MAX + 1];
88 int window_bits, mem_level;
88 size_t workspacesize; 89 size_t workspacesize;
89 int ret; 90 int ret;
90 91
@@ -94,7 +95,14 @@ static int zlib_compress_setup(struct crypto_pcomp *tfm, void *params,
94 95
95 zlib_comp_exit(ctx); 96 zlib_comp_exit(ctx);
96 97
97 workspacesize = zlib_deflate_workspacesize(); 98 window_bits = tb[ZLIB_COMP_WINDOWBITS]
99 ? nla_get_u32(tb[ZLIB_COMP_WINDOWBITS])
100 : MAX_WBITS;
101 mem_level = tb[ZLIB_COMP_MEMLEVEL]
102 ? nla_get_u32(tb[ZLIB_COMP_MEMLEVEL])
103 : DEF_MEM_LEVEL;
104
105 workspacesize = zlib_deflate_workspacesize(window_bits, mem_level);
98 stream->workspace = vzalloc(workspacesize); 106 stream->workspace = vzalloc(workspacesize);
99 if (!stream->workspace) 107 if (!stream->workspace)
100 return -ENOMEM; 108 return -ENOMEM;
@@ -106,12 +114,8 @@ static int zlib_compress_setup(struct crypto_pcomp *tfm, void *params,
106 tb[ZLIB_COMP_METHOD] 114 tb[ZLIB_COMP_METHOD]
107 ? nla_get_u32(tb[ZLIB_COMP_METHOD]) 115 ? nla_get_u32(tb[ZLIB_COMP_METHOD])
108 : Z_DEFLATED, 116 : Z_DEFLATED,
109 tb[ZLIB_COMP_WINDOWBITS] 117 window_bits,
110 ? nla_get_u32(tb[ZLIB_COMP_WINDOWBITS]) 118 mem_level,
111 : MAX_WBITS,
112 tb[ZLIB_COMP_MEMLEVEL]
113 ? nla_get_u32(tb[ZLIB_COMP_MEMLEVEL])
114 : DEF_MEM_LEVEL,
115 tb[ZLIB_COMP_STRATEGY] 119 tb[ZLIB_COMP_STRATEGY]
116 ? nla_get_u32(tb[ZLIB_COMP_STRATEGY]) 120 ? nla_get_u32(tb[ZLIB_COMP_STRATEGY])
117 : Z_DEFAULT_STRATEGY); 121 : Z_DEFAULT_STRATEGY);