Squashfs: Use vmalloc rather than kmalloc for zlib workspace
Subsystems (2)
PATCH 1/1 Squashfs: Use vmalloc rather than kmalloc for zlib workspace
Bugzilla bug 31422 reports occasional "page allocation failure. order:4" at Squashfs mount time. Fix this by making zlib workspace allocation use vmalloc rather than kmalloc.
Reported-by Mehmet Giritli <[email protected]>
Signed-off-by Phillip Lougher <[email protected]>
--- fs/squashfs/zlib_wrapper.c | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-)
fs/squashfs/zlib_wrapper.c +3 -3
@@ -26,6 +26,7 @@#include <linux/buffer_head.h> #include <linux/slab.h> #include <linux/zlib.h> +#include <linux/vmalloc.h> #include "squashfs_fs.h" #include "squashfs_fs_sb.h"
@@ -37,8 +38,7 @@ static void *zlib_init(struct squashfs_sb_info *dummy, void *buff, int len)z_stream *stream =kmalloc (sizeof (z_stream),GFP_KERNEL );if (stream ==NULL ) goto failed; - stream->workspace =kmalloc (zlib_inflate_workspacesize (), -GFP_KERNEL ); + stream->workspace =vmalloc (zlib_inflate_workspacesize ());if (stream->workspace ==NULL ) goto failed;
@@ -56,7 +56,7 @@ static void zlib_free(void *strm)z_stream *stream = strm;if (stream) -kfree (stream->workspace); +vfree (stream->workspace);kfree (stream); }
Signature · 1 line
1.7.1