2023-09-21 04:22:16

by Luis Chamberlain

[permalink] [raw]
Subject: Re: [PATCH] module/decompress: use vmalloc() for gzip decompression workspace

On Wed, Aug 30, 2023 at 05:58:20PM +0200, Andrea Righi wrote:
> Use a similar approach as commit a419beac4a07 ("module/decompress: use
> vmalloc() for zstd decompression workspace") and replace kmalloc() with
> vmalloc() also for the gzip module decompression workspace.
>
> In this case the workspace is represented by struct inflate_workspace
> that can be fairly large for kmalloc() and it can potentially lead to
> allocation errors on certain systems:
>
> $ pahole inflate_workspace
> struct inflate_workspace {
> struct inflate_state inflate_state; /* 0 9544 */
> /* --- cacheline 149 boundary (9536 bytes) was 8 bytes ago --- */
> unsigned char working_window[32768]; /* 9544 32768 */
>
> /* size: 42312, cachelines: 662, members: 2 */
> /* last cacheline: 8 bytes */
> };
>
> Considering that there is no need to use continuous physical memory,
> simply switch to vmalloc() to provide a more reliable in-kernel module
> decompression.
>
> Fixes: b1ae6dc41eaa ("module: add in-kernel support for decompressing")
> Signed-off-by: Andrea Righi <[email protected]>

Applied, and pushed, thanks!

Luis