diff --git a/fs/nfsd/vfs.c b/fs/nfsd/vfs.c
index 30c73f8a57913dd6540fb9d7690410c8c01c9eb8..da1d9701f8e4496e306199d820a6a3c44aaab920 100644
--- a/fs/nfsd/vfs.c
+++ b/fs/nfsd/vfs.c
@@ -1742,6 +1742,13 @@ nfsd_rename(struct svc_rqst *rqstp, struct svc_fh *ffhp, char *fname, int flen,
 		goto out_dput_new;
 
 	host_err = nfsd_break_lease(odentry->d_inode);
+	if (host_err)
+		goto out_drop_write;
+	if (ndentry->d_inode) {
+		host_err = nfsd_break_lease(ndentry->d_inode);
+		if (host_err)
+			goto out_drop_write;
+	}
 	if (host_err)
 		goto out_drop_write;
 	host_err = vfs_rename(fdir, odentry, tdir, ndentry);