The branch main has been updated by mjg:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=a269183875f6d5141c81277d41b552871e2171e5

commit a269183875f6d5141c81277d41b552871e2171e5
Author:     Mateusz Guzik <m...@freebsd.org>
AuthorDate: 2021-05-23 19:28:26 +0000
Commit:     Mateusz Guzik <m...@freebsd.org>
CommitDate: 2021-05-23 19:37:16 +0000

    vfs: elide vnode locking when it is only needed for audit if possible
---
 sys/kern/vfs_syscalls.c | 24 +++++++++++++++---------
 1 file changed, 15 insertions(+), 9 deletions(-)

diff --git a/sys/kern/vfs_syscalls.c b/sys/kern/vfs_syscalls.c
index 32e4c8688762..55780b0474ee 100644
--- a/sys/kern/vfs_syscalls.c
+++ b/sys/kern/vfs_syscalls.c
@@ -2802,9 +2802,11 @@ sys_fchflags(struct thread *td, struct fchflags_args 
*uap)
        if (error != 0)
                return (error);
 #ifdef AUDIT
-       vn_lock(fp->f_vnode, LK_SHARED | LK_RETRY);
-       AUDIT_ARG_VNODE1(fp->f_vnode);
-       VOP_UNLOCK(fp->f_vnode);
+       if (AUDITING_TD(td)) {
+               vn_lock(fp->f_vnode, LK_SHARED | LK_RETRY);
+               AUDIT_ARG_VNODE1(fp->f_vnode);
+               VOP_UNLOCK(fp->f_vnode);
+       }
 #endif
        error = setfflags(td, fp->f_vnode, uap->flags);
        fdrop(fp, td);
@@ -3303,9 +3305,11 @@ kern_futimes(struct thread *td, int fd, struct timeval 
*tptr,
        if (error != 0)
                return (error);
 #ifdef AUDIT
-       vn_lock(fp->f_vnode, LK_SHARED | LK_RETRY);
-       AUDIT_ARG_VNODE1(fp->f_vnode);
-       VOP_UNLOCK(fp->f_vnode);
+       if (AUDITING_TD(td)) {
+               vn_lock(fp->f_vnode, LK_SHARED | LK_RETRY);
+               AUDIT_ARG_VNODE1(fp->f_vnode);
+               VOP_UNLOCK(fp->f_vnode);
+       }
 #endif
        error = setutimes(td, fp->f_vnode, ts, 2, tptr == NULL);
        fdrop(fp, td);
@@ -3337,9 +3341,11 @@ kern_futimens(struct thread *td, int fd, struct timespec 
*tptr,
        if (error != 0)
                return (error);
 #ifdef AUDIT
-       vn_lock(fp->f_vnode, LK_SHARED | LK_RETRY);
-       AUDIT_ARG_VNODE1(fp->f_vnode);
-       VOP_UNLOCK(fp->f_vnode);
+       if (AUDITING_TD(td)) {
+               vn_lock(fp->f_vnode, LK_SHARED | LK_RETRY);
+               AUDIT_ARG_VNODE1(fp->f_vnode);
+               VOP_UNLOCK(fp->f_vnode);
+       }
 #endif
        error = setutimes(td, fp->f_vnode, ts, 2, flags & UTIMENS_NULL);
        fdrop(fp, td);
_______________________________________________
dev-commits-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/dev-commits-src-all
To unsubscribe, send any mail to "dev-commits-src-all-unsubscr...@freebsd.org"

Reply via email to