diff options
Diffstat (limited to 'crypto/zlib.c')
-rw-r--r-- | crypto/zlib.c | 18 |
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); |