diff options
author | jeff <jeff@FreeBSD.org> | 2005-06-14 01:14:40 +0000 |
---|---|---|
committer | jeff <jeff@FreeBSD.org> | 2005-06-14 01:14:40 +0000 |
commit | 1792584f2aca162b7b810a852ce3b1583c7e50e9 (patch) | |
tree | 9783ba6b3f01c9c59659a4a25a4fca75a479932e /sys/kern/vfs_extattr.c | |
parent | d6e60e9b867a54a54b941c4ff2300aefa5b1ab8f (diff) | |
download | FreeBSD-src-1792584f2aca162b7b810a852ce3b1583c7e50e9.zip FreeBSD-src-1792584f2aca162b7b810a852ce3b1583c7e50e9.tar.gz |
- Remove vnode lock asserts at the end of vfs syscalls. These asserts were
used to ensure that we weren't exiting the syscall with a lock still
held. This wasn't safe, however, because we'd already executed a vput()
and on a loaded system the vnode may have been free'd by the time we
assert. This functionality is also handled by the td_locks assert in
userret, which doesn't tell you what the syscall was, but will at least
panic before you deadlock.
Sponsored by: Isilon Systems, Inc.
Discovred by: Peter Holm
Approved by: re (blanket vfs)
Diffstat (limited to 'sys/kern/vfs_extattr.c')
-rw-r--r-- | sys/kern/vfs_extattr.c | 18 |
1 files changed, 0 insertions, 18 deletions
diff --git a/sys/kern/vfs_extattr.c b/sys/kern/vfs_extattr.c index b3bb0b2..fe796dc 100644 --- a/sys/kern/vfs_extattr.c +++ b/sys/kern/vfs_extattr.c @@ -1258,8 +1258,6 @@ restart: NDFREE(&nd, NDF_ONLY_PNBUF); vput(nd.ni_dvp); vn_finished_write(mp); - ASSERT_VOP_UNLOCKED(nd.ni_dvp, "mknod"); - ASSERT_VOP_UNLOCKED(nd.ni_vp, "mknod"); VFS_UNLOCK_GIANT(vfslocked); return (error); } @@ -1466,8 +1464,6 @@ kern_link(struct thread *td, char *path, char *link, enum uio_seg segflg) vrele(vp); vn_finished_write(mp); VFS_UNLOCK_GIANT(vfslocked); - ASSERT_VOP_UNLOCKED(nd.ni_dvp, "link"); - ASSERT_VOP_UNLOCKED(nd.ni_vp, "link"); return (error); } @@ -1557,8 +1553,6 @@ out2: vput(nd.ni_dvp); vn_finished_write(mp); VFS_UNLOCK_GIANT(vfslocked); - ASSERT_VOP_UNLOCKED(nd.ni_dvp, "symlink"); - ASSERT_VOP_UNLOCKED(nd.ni_vp, "symlink"); out: if (segflg != UIO_SYSSPACE) uma_zfree(namei_zone, syspath); @@ -1614,8 +1608,6 @@ restart: vput(nd.ni_dvp); vn_finished_write(mp); VFS_UNLOCK_GIANT(vfslocked); - ASSERT_VOP_UNLOCKED(nd.ni_dvp, "undelete"); - ASSERT_VOP_UNLOCKED(nd.ni_vp, "undelete"); return (error); } @@ -1701,8 +1693,6 @@ out: vput(vp); vput(nd.ni_dvp); VFS_UNLOCK_GIANT(vfslocked); - ASSERT_VOP_UNLOCKED(nd.ni_dvp, "unlink"); - ASSERT_VOP_UNLOCKED(nd.ni_vp, "unlink"); return (error); } @@ -3288,10 +3278,6 @@ out: vrele(fvp); } vrele(tond.ni_startdir); - ASSERT_VOP_UNLOCKED(fromnd.ni_dvp, "rename"); - ASSERT_VOP_UNLOCKED(fromnd.ni_vp, "rename"); - ASSERT_VOP_UNLOCKED(tond.ni_dvp, "rename"); - ASSERT_VOP_UNLOCKED(tond.ni_vp, "rename"); out1: vn_finished_write(mp); if (fromnd.ni_startdir) @@ -3387,8 +3373,6 @@ out: vput(nd.ni_vp); vn_finished_write(mp); VFS_UNLOCK_GIANT(vfslocked); - ASSERT_VOP_UNLOCKED(nd.ni_dvp, "mkdir"); - ASSERT_VOP_UNLOCKED(nd.ni_vp, "mkdir"); return (error); } @@ -3475,8 +3459,6 @@ out: vput(nd.ni_dvp); vput(vp); VFS_UNLOCK_GIANT(vfslocked); - ASSERT_VOP_UNLOCKED(nd.ni_dvp, "rmdir"); - ASSERT_VOP_UNLOCKED(nd.ni_vp, "rmdir"); return (error); } |