On Tue, Mar 19, 2024 at 02:53:54PM +0100, Jan Kara wrote: > On Mon 18-03-24 16:12:17, Chuck Lever wrote: > > On Mon, Mar 18, 2024 at 05:32:09PM +0100, Jan Kara wrote: > > > Commit a8b0026847b8 ("rename(): avoid a deadlock in the case of parents > > > having no common ancestor") added an error bail out path. However this > > > path does not drop the remount protection that has been acquired. Fix > > > the cleanup path to properly drop the remount protection. > > > > > > Fixes: a8b0026847b8 ("rename(): avoid a deadlock in the case of parents having no common ancestor") > > > Signed-off-by: Jan Kara <jack@xxxxxxx> > > > > Al, Jan, let me know if you'd like me to take this through the > > nfsd tree for v6.9-rc. If not: > > > > Acked-by: Chuck Lever <chuck.lever@xxxxxxxxxx> > > Yeah, I guess taking this through NFS tree is the best. I've pushed this to my nfsd-fixes branch, and will begin testing. > Honza > > > > > > > > --- > > > 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 6a9464262fae..2e41eb4c3cec 100644 > > > --- a/fs/nfsd/vfs.c > > > +++ b/fs/nfsd/vfs.c > > > @@ -1852,7 +1852,7 @@ nfsd_rename(struct svc_rqst *rqstp, struct svc_fh *ffhp, char *fname, int flen, > > > trap = lock_rename(tdentry, fdentry); > > > if (IS_ERR(trap)) { > > > err = (rqstp->rq_vers == 2) ? nfserr_acces : nfserr_xdev; > > > - goto out; > > > + goto out_want_write; > > > } > > > err = fh_fill_pre_attrs(ffhp); > > > if (err != nfs_ok) > > > @@ -1922,6 +1922,7 @@ nfsd_rename(struct svc_rqst *rqstp, struct svc_fh *ffhp, char *fname, int flen, > > > } > > > out_unlock: > > > unlock_rename(tdentry, fdentry); > > > +out_want_write: > > > fh_drop_write(ffhp); > > > > > > /* > > > -- > > > 2.35.3 > > > > > > > -- > > Chuck Lever > > > -- > Jan Kara <jack@xxxxxxxx> > SUSE Labs, CR -- Chuck Lever