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>
if (state) {
zlib_inflateEnd(&state->strm);
- kfree(state->strm.workspace);
+ vfree(state->strm.workspace);
kfree(state);
}
}
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;