net: ppp_deflate: Switch z_decomp_alloc to vmalloced decompress buffers
authorRebecca Schultz Zavin <rebecca@android.com>
Thu, 29 Apr 2010 20:36:55 +0000 (13:36 -0700)
committerColin Cross <ccross@android.com>
Thu, 7 Oct 2010 00:03:19 +0000 (17:03 -0700)
On systems with high memory pressure, allocating an order 4 contiguous region
for decompression can fail at run time.  Instead use virtually contigous memory
allocated via vmalloc.

Change-Id: I7821882bd183a1de0d73ab2932f6e6978e4f0970
Signed-off-by: Rebecca Schultz Zavin <rebecca@android.com>
drivers/net/ppp_deflate.c

index 695bc83e0cfd1125081138bb79b4a25fa378f592..bda70852c5efab779947fabd478d37b615e95ff1 100644 (file)
@@ -306,7 +306,7 @@ static void z_decomp_free(void *arg)
 
        if (state) {
                zlib_inflateEnd(&state->strm);
-               kfree(state->strm.workspace);
+               vfree(state->strm.workspace);
                kfree(state);
        }
 }
@@ -346,8 +346,7 @@ static void *z_decomp_alloc(unsigned char *options, int opt_len)
 
        state->w_size         = w_size;
        state->strm.next_out  = NULL;
-       state->strm.workspace = kmalloc(zlib_inflate_workspacesize(),
-                                       GFP_KERNEL|__GFP_REPEAT);
+       state->strm.workspace = vmalloc(zlib_inflate_workspacesize());
        if (state->strm.workspace == NULL)
                goto out_free;