diff options
author | pjd <pjd@FreeBSD.org> | 2005-09-01 21:46:33 +0000 |
---|---|---|
committer | pjd <pjd@FreeBSD.org> | 2005-09-01 21:46:33 +0000 |
commit | 226a90d03ebae8331576e4365e785261bbe428f1 (patch) | |
tree | b33ef05941ba99ab4f6d2f79f8ef4d3d2fee3a2a /sys/kern/vfs_extattr.c | |
parent | 496d9adedae60499033937e11fefc388f1033474 (diff) | |
download | FreeBSD-src-226a90d03ebae8331576e4365e785261bbe428f1.zip FreeBSD-src-226a90d03ebae8331576e4365e785261bbe428f1.tar.gz |
In case of mac_check_vnode_rename_from() or vn_start_write() failure,
vn_finished_write() should not be called.
Reviewed by: ssouhlal
MFC after: 3 days
Diffstat (limited to 'sys/kern/vfs_extattr.c')
-rw-r--r-- | sys/kern/vfs_extattr.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/sys/kern/vfs_extattr.c b/sys/kern/vfs_extattr.c index fb7f467..70f9812 100644 --- a/sys/kern/vfs_extattr.c +++ b/sys/kern/vfs_extattr.c @@ -3215,6 +3215,7 @@ kern_rename(struct thread *td, char *from, char *to, enum uio_seg pathseg) NDFREE(&fromnd, NDF_ONLY_PNBUF); vrele(fromnd.ni_dvp); vrele(fvp); + vn_finished_write(mp); goto out1; } tvfslocked = NDHASGIANT(&tond); @@ -3268,8 +3269,8 @@ out: vrele(fvp); } vrele(tond.ni_startdir); -out1: vn_finished_write(mp); +out1: if (fromnd.ni_startdir) vrele(fromnd.ni_startdir); VFS_UNLOCK_GIANT(fvfslocked); |