When renaming a file on a FUSE file system and the target exists and is open, a deadlock will occur because the target vnode (tvp) has not been unlocked by fusefs_rename(). When the process that has the file open calls close(2) the vnode will still be locked with no chance of ever being unlocked.
ok? Index: fuse_vnops.c =================================================================== RCS file: /cvs/src/sys/miscfs/fuse/fuse_vnops.c,v retrieving revision 1.34 diff -u -p -u -p -r1.34 fuse_vnops.c --- fuse_vnops.c 17 Nov 2017 15:45:17 -0000 1.34 +++ fuse_vnops.c 24 Nov 2017 23:20:14 -0000 @@ -1261,6 +1261,8 @@ abortit: vrele(tdvp); else vput(tdvp); + if (tvp) + vput(tvp); vrele(fdvp); vrele(fvp);