Message ID | 1656190363-29148-1-git-send-email-khoroshilov@ispras.ru (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | NFSD: restore EINVAL error translation in nfsd_commit() | expand |
Hello Alexey- > On Jun 25, 2022, at 4:52 PM, Alexey Khoroshilov <khoroshilov@ispras.ru> wrote: > > commit 555dbf1a9aac ("nfsd: Replace use of rwsem with errseq_t") > incidentally broke translation of -EINVAL to nfserr_notsupp. > The patch restores that. > > Found by Linux Verification Center (linuxtesting.org) with SVACE. > > Signed-off-by: Alexey Khoroshilov <khoroshilov@ispras.ru> > Fixes: 555dbf1a9aac ("nfsd: Replace use of rwsem with errseq_t") LGTM. Applied to the for-rc topic branch here: https://git.kernel.org/pub/scm/linux/kernel/git/cel/linux.git > --- > fs/nfsd/vfs.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/fs/nfsd/vfs.c b/fs/nfsd/vfs.c > index 840e3af63a6f..1b09d7293bc5 100644 > --- a/fs/nfsd/vfs.c > +++ b/fs/nfsd/vfs.c > @@ -1173,6 +1173,7 @@ nfsd_commit(struct svc_rqst *rqstp, struct svc_fh *fhp, u64 offset, > nfsd_copy_write_verifier(verf, nn); > err2 = filemap_check_wb_err(nf->nf_file->f_mapping, > since); > + err = nfserrno(err2); > break; > case -EINVAL: > err = nfserr_notsupp; > @@ -1180,8 +1181,8 @@ nfsd_commit(struct svc_rqst *rqstp, struct svc_fh *fhp, u64 offset, > default: > nfsd_reset_write_verifier(nn); > trace_nfsd_writeverf_reset(nn, rqstp, err2); > + err = nfserrno(err2); > } > - err = nfserrno(err2); > } else > nfsd_copy_write_verifier(verf, nn); > > -- > 2.7.4 > -- Chuck Lever
diff --git a/fs/nfsd/vfs.c b/fs/nfsd/vfs.c index 840e3af63a6f..1b09d7293bc5 100644 --- a/fs/nfsd/vfs.c +++ b/fs/nfsd/vfs.c @@ -1173,6 +1173,7 @@ nfsd_commit(struct svc_rqst *rqstp, struct svc_fh *fhp, u64 offset, nfsd_copy_write_verifier(verf, nn); err2 = filemap_check_wb_err(nf->nf_file->f_mapping, since); + err = nfserrno(err2); break; case -EINVAL: err = nfserr_notsupp; @@ -1180,8 +1181,8 @@ nfsd_commit(struct svc_rqst *rqstp, struct svc_fh *fhp, u64 offset, default: nfsd_reset_write_verifier(nn); trace_nfsd_writeverf_reset(nn, rqstp, err2); + err = nfserrno(err2); } - err = nfserrno(err2); } else nfsd_copy_write_verifier(verf, nn);
commit 555dbf1a9aac ("nfsd: Replace use of rwsem with errseq_t") incidentally broke translation of -EINVAL to nfserr_notsupp. The patch restores that. Found by Linux Verification Center (linuxtesting.org) with SVACE. Signed-off-by: Alexey Khoroshilov <khoroshilov@ispras.ru> Fixes: 555dbf1a9aac ("nfsd: Replace use of rwsem with errseq_t") --- fs/nfsd/vfs.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)