svn commit: r184661 - in head/sys: kern security/audit
John Baldwin
jhb at FreeBSD.org
Tue Nov 4 14:31:05 PST 2008
Author: jhb
Date: Tue Nov 4 22:31:04 2008
New Revision: 184661
URL: http://svn.freebsd.org/changeset/base/184661
Log:
Use shared vnode locks for auditing vnode arguments as auditing only
does a VOP_GETATTR() which does not require an exclusive lock.
Reviewed by: csjp, rwatson
Modified:
head/sys/kern/vfs_syscalls.c
head/sys/security/audit/audit_arg.c
Modified: head/sys/kern/vfs_syscalls.c
==============================================================================
--- head/sys/kern/vfs_syscalls.c Tue Nov 4 22:30:24 2008 (r184660)
+++ head/sys/kern/vfs_syscalls.c Tue Nov 4 22:31:04 2008 (r184661)
@@ -2734,7 +2734,7 @@ fchflags(td, uap)
return (error);
vfslocked = VFS_LOCK_GIANT(fp->f_vnode->v_mount);
#ifdef AUDIT
- vn_lock(fp->f_vnode, LK_EXCLUSIVE | LK_RETRY);
+ vn_lock(fp->f_vnode, LK_SHARED | LK_RETRY);
AUDIT_ARG(vnode, fp->f_vnode, ARG_VNODE1);
VOP_UNLOCK(fp->f_vnode, 0);
#endif
@@ -2896,7 +2896,7 @@ fchmod(td, uap)
return (error);
vfslocked = VFS_LOCK_GIANT(fp->f_vnode->v_mount);
#ifdef AUDIT
- vn_lock(fp->f_vnode, LK_EXCLUSIVE | LK_RETRY);
+ vn_lock(fp->f_vnode, LK_SHARED | LK_RETRY);
AUDIT_ARG(vnode, fp->f_vnode, ARG_VNODE1);
VOP_UNLOCK(fp->f_vnode, 0);
#endif
@@ -3074,7 +3074,7 @@ fchown(td, uap)
return (error);
vfslocked = VFS_LOCK_GIANT(fp->f_vnode->v_mount);
#ifdef AUDIT
- vn_lock(fp->f_vnode, LK_EXCLUSIVE | LK_RETRY);
+ vn_lock(fp->f_vnode, LK_SHARED | LK_RETRY);
AUDIT_ARG(vnode, fp->f_vnode, ARG_VNODE1);
VOP_UNLOCK(fp->f_vnode, 0);
#endif
@@ -3311,7 +3311,7 @@ kern_futimes(struct thread *td, int fd,
return (error);
vfslocked = VFS_LOCK_GIANT(fp->f_vnode->v_mount);
#ifdef AUDIT
- vn_lock(fp->f_vnode, LK_EXCLUSIVE | LK_RETRY);
+ vn_lock(fp->f_vnode, LK_SHARED | LK_RETRY);
AUDIT_ARG(vnode, fp->f_vnode, ARG_VNODE1);
VOP_UNLOCK(fp->f_vnode, 0);
#endif
Modified: head/sys/security/audit/audit_arg.c
==============================================================================
--- head/sys/security/audit/audit_arg.c Tue Nov 4 22:30:24 2008 (r184660)
+++ head/sys/security/audit/audit_arg.c Tue Nov 4 22:31:04 2008 (r184661)
@@ -631,7 +631,7 @@ audit_arg_file(struct proc *p, struct fi
*/
vp = fp->f_vnode;
vfslocked = VFS_LOCK_GIANT(vp->v_mount);
- vn_lock(vp, LK_EXCLUSIVE | LK_RETRY);
+ vn_lock(vp, LK_SHARED | LK_RETRY);
audit_arg_vnode(vp, ARG_VNODE1);
VOP_UNLOCK(vp, 0);
VFS_UNLOCK_GIANT(vfslocked);
@@ -849,7 +849,7 @@ audit_sysclose(struct thread *td, int fd
vp = fp->f_vnode;
vfslocked = VFS_LOCK_GIANT(vp->v_mount);
- vn_lock(vp, LK_EXCLUSIVE | LK_RETRY);
+ vn_lock(vp, LK_SHARED | LK_RETRY);
audit_arg_vnode(vp, ARG_VNODE1);
VOP_UNLOCK(vp, 0);
VFS_UNLOCK_GIANT(vfslocked);
More information about the svn-src-all
mailing list