OSDN Git Service

nfsd/nfsd3_proc_readdir: fix buffer count and page pointers
authorMurphy Zhou <jencce.kernel@gmail.com>
Thu, 4 Apr 2019 06:57:11 +0000 (14:57 +0800)
committerJ. Bruce Fields <bfields@redhat.com>
Fri, 5 Apr 2019 23:57:24 +0000 (19:57 -0400)
commit3c86794ac0e6582eea7733619d58ea150198502f
tree097ea6e5d63a6fc920c1c0b30f7de874f148b4cf
parentd58431eacb226222430940134d97bfd72f292fcd
nfsd/nfsd3_proc_readdir: fix buffer count and page pointers

After this commit
  f875a79 nfsd: allow nfsv3 readdir request to be larger.
nfsv3 readdir request size can be larger than PAGE_SIZE. So if the
directory been read is large enough, we can use multiple pages
in rq_respages. Update buffer count and page pointers like we do
in readdirplus to make this happen.

Now listing a directory within 3000 files will panic because we
are counting in a wrong way and would write on random page.

Fixes: f875a79 "nfsd: allow nfsv3 readdir request to be larger"
Signed-off-by: Murphy Zhou <jencce.kernel@gmail.com>
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
fs/nfsd/nfs3proc.c
fs/nfsd/nfs3xdr.c