Message ID | KU1P153MB0197AE46D423F3AB32ADEF419E6B9@KU1P153MB0197.APCP153.PROD.OUTLOOK.COM (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | nfs: Subsequent READDIR calls should carry non-zero cookieverifier | expand |
On Tue, 2021-03-16 at 10:25 +0000, Nagendra Tomar wrote: > From: Nagendra S Tomar <natomar@microsoft.com> > > If the loop in nfs_readdir_xdr_to_array() runs more than once, > subsequent > READDIR RPCs may wrongly carry a zero cookie verifier and non-zero > cookie. > Make sure subsequent calls to READDIR carry the cookie verifier > returned > by the first call. > > Signed-off-by: Nagendra S Tomar <natomar@microsoft.com> > --- > diff --git a/fs/nfs/dir.c b/fs/nfs/dir.c > index fc4f490f2d78..08a1e2e31d0b 100644 > --- a/fs/nfs/dir.c > +++ b/fs/nfs/dir.c > @@ -866,6 +866,8 @@ static int nfs_readdir_xdr_to_array(struct > nfs_readdir_descriptor *desc, > break; > } > > + verf_arg = verf_res; > + > status = nfs_readdir_page_filler(desc, entry, pages, > pglen, > arrays, narrays); > } while (!status && nfs_readdir_page_needs_filling(page)); That looks good to me. However when looking over that code, I think I spotted a similar issue when we're doing uncached readdir in order to try to recover a missing cookie. I therefore Cced you on the posting for that patch.
diff --git a/fs/nfs/dir.c b/fs/nfs/dir.c index fc4f490f2d78..08a1e2e31d0b 100644 --- a/fs/nfs/dir.c +++ b/fs/nfs/dir.c @@ -866,6 +866,8 @@ static int nfs_readdir_xdr_to_array(struct nfs_readdir_descriptor *desc, break; } + verf_arg = verf_res; + status = nfs_readdir_page_filler(desc, entry, pages, pglen, arrays, narrays); } while (!status && nfs_readdir_page_needs_filling(page));