From: Mike Rapoport (Microsoft) Date: Sat, 23 May 2026 17:54:19 +0000 (+0300) Subject: NFSD: replace __get_free_page() with kmalloc() in nfsd_buffered_readdir() X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=06040e75202d7f4fb6aa8f8daf3ffe5aa3e1c9da;p=thirdparty%2Fkernel%2Flinux.git NFSD: replace __get_free_page() with kmalloc() in nfsd_buffered_readdir() nfsd_buffered_readdir() allocates a staging buffer with __get_free_page(). kmalloc() is a better API for such use and it also provides better scalability and more debugging possibilities. Replace use of __get_free_page() with kmalloc(). Signed-off-by: Mike Rapoport (Microsoft) Link: https://patch.msgid.link/20260523-b4-fs-v1-7-275e36a83f0e@kernel.org Acked-by: Jeff Layton Signed-off-by: Christian Brauner (Amutable) --- diff --git a/fs/nfsd/vfs.c b/fs/nfsd/vfs.c index eafdf7b7890fd..c99e54b23cd9b 100644 --- a/fs/nfsd/vfs.c +++ b/fs/nfsd/vfs.c @@ -2407,7 +2407,7 @@ static __be32 nfsd_buffered_readdir(struct file *file, struct svc_fh *fhp, loff_t offset; struct readdir_data buf = { .ctx.actor = nfsd_buffered_filldir, - .dirent = (void *)__get_free_page(GFP_KERNEL) + .dirent = kmalloc(PAGE_SIZE, GFP_KERNEL) }; if (!buf.dirent) @@ -2458,7 +2458,7 @@ static __be32 nfsd_buffered_readdir(struct file *file, struct svc_fh *fhp, offset = vfs_llseek(file, 0, SEEK_CUR); } - free_page((unsigned long)(buf.dirent)); + kfree((buf.dirent)); if (host_err) return nfserrno(host_err);