We're using a 4-order allocation in there and it can fail. Change it to just keep reclaiming memory until something gives. --- drivers/net/ppp_deflate.c | 2 +- 1 files changed, 1 insertion(+), 1 deletion(-) diff -puN drivers/net/ppp_deflate.c~ppp-allocation-fix drivers/net/ppp_deflate.c --- 25/drivers/net/ppp_deflate.c~ppp-allocation-fix 2004-01-31 00:39:08.000000000 -0800 +++ 25-akpm/drivers/net/ppp_deflate.c 2004-01-31 00:40:21.000000000 -0800 @@ -351,7 +351,7 @@ static void *z_decomp_alloc(unsigned cha state->w_size = w_size; state->strm.next_out = NULL; state->strm.workspace = kmalloc(zlib_inflate_workspacesize(), - GFP_KERNEL); + GFP_KERNEL|__GFP_REPEAT); if (state->strm.workspace == NULL) goto out_free; _