On Wed, Nov 01, 2023 at 09:21:09PM -1000, Linus Torvalds wrote:
> On Wed, 1 Nov 2023 at 21:02, Linus Torvalds
> <torva...@linux-foundation.org> wrote:
> >
> > kmalloc() isn't just about "use physically contiguous allocations".
> > It's also more memory-efficient, and a *lot* faster than vmalloc(),
> > which has to play VM tricks.
> 
> I've pulled this, but I think you should do something like the
> attached (UNTESTED!) patch.
> 
>                 Linus

Looks good to me, I'll give it a try ASAP.

-Andrea


>  kernel/module/decompress.c | 8 ++++----
>  1 file changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/kernel/module/decompress.c b/kernel/module/decompress.c
> index 4156d59be440..474e68f0f063 100644
> --- a/kernel/module/decompress.c
> +++ b/kernel/module/decompress.c
> @@ -100,7 +100,7 @@ static ssize_t module_gzip_decompress(struct load_info 
> *info,
>       s.next_in = buf + gzip_hdr_len;
>       s.avail_in = size - gzip_hdr_len;
>  
> -     s.workspace = vmalloc(zlib_inflate_workspacesize());
> +     s.workspace = kvmalloc(zlib_inflate_workspacesize(), GFP_KERNEL);
>       if (!s.workspace)
>               return -ENOMEM;
>  
> @@ -138,7 +138,7 @@ static ssize_t module_gzip_decompress(struct load_info 
> *info,
>  out_inflate_end:
>       zlib_inflateEnd(&s);
>  out:
> -     vfree(s.workspace);
> +     kvfree(s.workspace);
>       return retval;
>  }
>  #elif defined(CONFIG_MODULE_COMPRESS_XZ)
> @@ -241,7 +241,7 @@ static ssize_t module_zstd_decompress(struct load_info 
> *info,
>       }
>  
>       wksp_size = zstd_dstream_workspace_bound(header.windowSize);
> -     wksp = vmalloc(wksp_size);
> +     wksp = kvmalloc(wksp_size, GFP_KERNEL);
>       if (!wksp) {
>               retval = -ENOMEM;
>               goto out;
> @@ -284,7 +284,7 @@ static ssize_t module_zstd_decompress(struct load_info 
> *info,
>       retval = new_size;
>  
>   out:
> -     vfree(wksp);
> +     kvfree(wksp);
>       return retval;
>  }
>  #else


Reply via email to