diff options
author | David S. Miller <davem@davemloft.net> | 2011-06-29 05:48:41 -0700 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2011-06-29 05:48:41 -0700 |
commit | 7ab24bfdf9a9a9f87ac8e5ad9a25f80b5b947be7 (patch) | |
tree | 897d12fb7498316d05ce2ed48722fc78b61fc4e1 /crypto/deflate.c | |
parent | ed6e4ef836d425bc35e33bf20fcec95e68203afa (diff) | |
download | lwn-7ab24bfdf9a9a9f87ac8e5ad9a25f80b5b947be7.tar.gz lwn-7ab24bfdf9a9a9f87ac8e5ad9a25f80b5b947be7.zip |
net+crypto: Use vmalloc for zlib inflate buffers.
They are 64K and result in order-4 allocations, even with SLUB.
Therefore, just like we always have for the deflate buffers, use
vmalloc.
Reported-by: Martin Jackson <mjackson220.list@gmail.com>
Acked-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'crypto/deflate.c')
-rw-r--r-- | crypto/deflate.c | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/crypto/deflate.c b/crypto/deflate.c index b5ccae29be74..b0165ecad0c5 100644 --- a/crypto/deflate.c +++ b/crypto/deflate.c @@ -32,7 +32,6 @@ #include <linux/interrupt.h> #include <linux/mm.h> #include <linux/net.h> -#include <linux/slab.h> #define DEFLATE_DEF_LEVEL Z_DEFAULT_COMPRESSION #define DEFLATE_DEF_WINBITS 11 @@ -73,7 +72,7 @@ static int deflate_decomp_init(struct deflate_ctx *ctx) int ret = 0; struct z_stream_s *stream = &ctx->decomp_stream; - stream->workspace = kzalloc(zlib_inflate_workspacesize(), GFP_KERNEL); + stream->workspace = vzalloc(zlib_inflate_workspacesize()); if (!stream->workspace) { ret = -ENOMEM; goto out; @@ -86,7 +85,7 @@ static int deflate_decomp_init(struct deflate_ctx *ctx) out: return ret; out_free: - kfree(stream->workspace); + vfree(stream->workspace); goto out; } @@ -99,7 +98,7 @@ static void deflate_comp_exit(struct deflate_ctx *ctx) static void deflate_decomp_exit(struct deflate_ctx *ctx) { zlib_inflateEnd(&ctx->decomp_stream); - kfree(ctx->decomp_stream.workspace); + vfree(ctx->decomp_stream.workspace); } static int deflate_init(struct crypto_tfm *tfm) |