Re: [PATCH 07/17] NFSD: replace __get_free_page() with kmalloc() in nfsd_buffered_readdir()
Jeff Layton <[email protected]> Sat, 23 May 2026 14:45:01 -0400
| Newsgroups | org.kernel.vger.linux-nilfs,dev.linux.lists.ocfs2-devel,org.kernel.vger.linux-ext4,org.kernel.vger.linux-fsdevel,org.kernel.vger.linux-kernel,org.kernel.vger.linux-nfs,org.kvack.linux-mm |
|---|---|
| Message-ID | <[email protected]> |
On Sat, 2026-05-23 at 20:54 +0300, Mike Rapoport (Microsoft) wrote: > nfsd_buffered_readdir() allocates a staging buffer with __get_free_page()= . >=20 > kmalloc() is a better API for such use and it also provides better > scalability and more debugging possibilities. >=20 > Replace use of __get_free_page() with kmalloc(). >=20 > Signed-off-by: Mike Rapoport (Microsoft) <[email protected]> > --- > fs/nfsd/vfs.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) >=20 > diff --git a/fs/nfsd/vfs.c b/fs/nfsd/vfs.c > index eafdf7b7890f..c99e54b23cd9 100644 > --- a/fs/nfsd/vfs.c > +++ b/fs/nfsd/vfs.c > @@ -2407,7 +2407,7 @@ static __be32 nfsd_buffered_readdir(struct file *fi= le, struct svc_fh *fhp, > loff_t offset; > struct readdir_data buf =3D { > .ctx.actor =3D nfsd_buffered_filldir, > - .dirent =3D (void *)__get_free_page(GFP_KERNEL) > + .dirent =3D kmalloc(PAGE_SIZE, GFP_KERNEL) > }; > =20 > if (!buf.dirent) > @@ -2458,7 +2458,7 @@ static __be32 nfsd_buffered_readdir(struct file *fi= le, struct svc_fh *fhp, > offset =3D vfs_llseek(file, 0, SEEK_CUR); > } > =20 > - free_page((unsigned long)(buf.dirent)); > + kfree((buf.dirent)); nit: Don't need double parenthesis here > =20 > if (host_err) > return nfserrno(host_err); The rest seems ok though. Acked-by: Jeff Layton <[email protected]>