diff options
author | Mateusz Guzik <mjg@FreeBSD.org> | 2022-03-12 11:47:07 +0000 |
---|---|---|
committer | Mateusz Guzik <mjg@FreeBSD.org> | 2022-03-12 11:47:07 +0000 |
commit | 381dd12cea1715940b1f8f95f28614d664b020ad (patch) | |
tree | 3da5ef52d7dd91e5dee5e7f37145aca778a50461 | |
parent | cb54c500d0e1a2c52270b15c6db6a88ca3feb86a (diff) | |
download | src-381dd12cea1715940b1f8f95f28614d664b020ad.tar.gz src-381dd12cea1715940b1f8f95f28614d664b020ad.zip |
vfs: stop evaluating the argument multpile times in stat macros
-rw-r--r-- | sys/sys/vnode.h | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/sys/sys/vnode.h b/sys/sys/vnode.h index 6e8373379587..f595029bdd14 100644 --- a/sys/sys/vnode.h +++ b/sys/sys/vnode.h @@ -966,18 +966,20 @@ void vop_mkdir_debugpost(void *a, int rc); void vop_rename_fail(struct vop_rename_args *ap); #define vop_stat_helper_pre(ap) ({ \ + struct vop_stat_args *_ap = (ap); \ int _error; \ AUDIT_ARG_VNODE1(ap->a_vp); \ - _error = mac_vnode_check_stat(ap->a_active_cred, ap->a_file_cred, ap->a_vp);\ + _error = mac_vnode_check_stat(_ap->a_active_cred, _ap->a_file_cred, _ap->a_vp);\ if (__predict_true(_error == 0)) \ - bzero(ap->a_sb, sizeof(*ap->a_sb)); \ + bzero(_ap->a_sb, sizeof(*_ap->a_sb)); \ _error; \ }) #define vop_stat_helper_post(ap, error) ({ \ + struct vop_stat_args *_ap = (ap); \ int _error = (error); \ - if (priv_check_cred_vfs_generation(ap->a_active_cred)) \ - ap->a_sb->st_gen = 0; \ + if (priv_check_cred_vfs_generation(_ap->a_active_cred)) \ + _ap->a_sb->st_gen = 0; \ _error; \ }) |