diff options
Diffstat (limited to 'crypto/deflate.c')
-rw-r--r-- | crypto/deflate.c | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/crypto/deflate.c b/crypto/deflate.c index 463dc859aa05..b0165ecad0c5 100644 --- a/crypto/deflate.c +++ b/crypto/deflate.c | |||
@@ -32,7 +32,6 @@ | |||
32 | #include <linux/interrupt.h> | 32 | #include <linux/interrupt.h> |
33 | #include <linux/mm.h> | 33 | #include <linux/mm.h> |
34 | #include <linux/net.h> | 34 | #include <linux/net.h> |
35 | #include <linux/slab.h> | ||
36 | 35 | ||
37 | #define DEFLATE_DEF_LEVEL Z_DEFAULT_COMPRESSION | 36 | #define DEFLATE_DEF_LEVEL Z_DEFAULT_COMPRESSION |
38 | #define DEFLATE_DEF_WINBITS 11 | 37 | #define DEFLATE_DEF_WINBITS 11 |
@@ -48,12 +47,12 @@ static int deflate_comp_init(struct deflate_ctx *ctx) | |||
48 | int ret = 0; | 47 | int ret = 0; |
49 | struct z_stream_s *stream = &ctx->comp_stream; | 48 | struct z_stream_s *stream = &ctx->comp_stream; |
50 | 49 | ||
51 | stream->workspace = vmalloc(zlib_deflate_workspacesize()); | 50 | stream->workspace = vzalloc(zlib_deflate_workspacesize( |
51 | -DEFLATE_DEF_WINBITS, DEFLATE_DEF_MEMLEVEL)); | ||
52 | if (!stream->workspace) { | 52 | if (!stream->workspace) { |
53 | ret = -ENOMEM; | 53 | ret = -ENOMEM; |
54 | goto out; | 54 | goto out; |
55 | } | 55 | } |
56 | memset(stream->workspace, 0, zlib_deflate_workspacesize()); | ||
57 | ret = zlib_deflateInit2(stream, DEFLATE_DEF_LEVEL, Z_DEFLATED, | 56 | ret = zlib_deflateInit2(stream, DEFLATE_DEF_LEVEL, Z_DEFLATED, |
58 | -DEFLATE_DEF_WINBITS, DEFLATE_DEF_MEMLEVEL, | 57 | -DEFLATE_DEF_WINBITS, DEFLATE_DEF_MEMLEVEL, |
59 | Z_DEFAULT_STRATEGY); | 58 | Z_DEFAULT_STRATEGY); |
@@ -73,7 +72,7 @@ static int deflate_decomp_init(struct deflate_ctx *ctx) | |||
73 | int ret = 0; | 72 | int ret = 0; |
74 | struct z_stream_s *stream = &ctx->decomp_stream; | 73 | struct z_stream_s *stream = &ctx->decomp_stream; |
75 | 74 | ||
76 | stream->workspace = kzalloc(zlib_inflate_workspacesize(), GFP_KERNEL); | 75 | stream->workspace = vzalloc(zlib_inflate_workspacesize()); |
77 | if (!stream->workspace) { | 76 | if (!stream->workspace) { |
78 | ret = -ENOMEM; | 77 | ret = -ENOMEM; |
79 | goto out; | 78 | goto out; |
@@ -86,7 +85,7 @@ static int deflate_decomp_init(struct deflate_ctx *ctx) | |||
86 | out: | 85 | out: |
87 | return ret; | 86 | return ret; |
88 | out_free: | 87 | out_free: |
89 | kfree(stream->workspace); | 88 | vfree(stream->workspace); |
90 | goto out; | 89 | goto out; |
91 | } | 90 | } |
92 | 91 | ||
@@ -99,7 +98,7 @@ static void deflate_comp_exit(struct deflate_ctx *ctx) | |||
99 | static void deflate_decomp_exit(struct deflate_ctx *ctx) | 98 | static void deflate_decomp_exit(struct deflate_ctx *ctx) |
100 | { | 99 | { |
101 | zlib_inflateEnd(&ctx->decomp_stream); | 100 | zlib_inflateEnd(&ctx->decomp_stream); |
102 | kfree(ctx->decomp_stream.workspace); | 101 | vfree(ctx->decomp_stream.workspace); |
103 | } | 102 | } |
104 | 103 | ||
105 | static int deflate_init(struct crypto_tfm *tfm) | 104 | static int deflate_init(struct crypto_tfm *tfm) |