On Wed, Nov 01, 2023 at 09:21:09PM -1000, Linus Torvalds wrote: > On Wed, 1 Nov 2023 at 21:02, Linus Torvalds > <torvalds@xxxxxxxxxxxxxxxxxxxx> 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