aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sys/fs/msdosfs/msdosfs_vnops.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/sys/fs/msdosfs/msdosfs_vnops.c b/sys/fs/msdosfs/msdosfs_vnops.c
index e1e679d92146..8885ac856588 100644
--- a/sys/fs/msdosfs/msdosfs_vnops.c
+++ b/sys/fs/msdosfs/msdosfs_vnops.c
@@ -1122,6 +1122,14 @@ abortit:
VOP_UNLOCK(tdvp);
vrele(tdvp);
vrele(ap->a_fvp);
+ /*
+ * fdvp may be locked and has a reference. We need to
+ * release the lock and reference, unless to and from
+ * directories are the same. In that case it is already
+ * unlocked.
+ */
+ if (tdvp != fdvp)
+ vput(fdvp);
return 0;
}
xp = VTODE(fvp);