summaryrefslogtreecommitdiffstats
path: root/sys/security/audit/audit_arg.c
diff options
context:
space:
mode:
authorrwatson <rwatson@FreeBSD.org>2008-11-14 01:24:52 +0000
committerrwatson <rwatson@FreeBSD.org>2008-11-14 01:24:52 +0000
commitea0b860502bbb6c24b2c4f853c2d4c97e5d96f2b (patch)
treef4dda4b865cb4380c2d7ee549196f94554aaa671 /sys/security/audit/audit_arg.c
parentcbf9e0a3f94f230c45edb13092f4b4b0ae60342a (diff)
downloadFreeBSD-src-ea0b860502bbb6c24b2c4f853c2d4c97e5d96f2b.zip
FreeBSD-src-ea0b860502bbb6c24b2c4f853c2d4c97e5d96f2b.tar.gz
When repeatedly accessing a thread credential, cache the credential
pointer in a local thread. While this is unlikely to significantly improve performance given modern compiler behavior, it makes the code more readable and reduces diffs to the Mac OS X version of the same code (which stores things in creds in the same way, but where the cred for a thread is reached quite differently). Discussed with: sson MFC after: 1 month Sponsored by: Apple Inc. Obtained from: TrustedBSD Project
Diffstat (limited to 'sys/security/audit/audit_arg.c')
-rw-r--r--sys/security/audit/audit_arg.c16
1 files changed, 9 insertions, 7 deletions
diff --git a/sys/security/audit/audit_arg.c b/sys/security/audit/audit_arg.c
index f938881..2007041 100644
--- a/sys/security/audit/audit_arg.c
+++ b/sys/security/audit/audit_arg.c
@@ -356,6 +356,7 @@ void
audit_arg_process(struct proc *p)
{
struct kaudit_record *ar;
+ struct ucred *cred;
KASSERT(p != NULL, ("audit_arg_process: p == NULL"));
@@ -365,13 +366,14 @@ audit_arg_process(struct proc *p)
if (ar == NULL)
return;
- ar->k_ar.ar_arg_auid = p->p_ucred->cr_audit.ai_auid;
- ar->k_ar.ar_arg_euid = p->p_ucred->cr_uid;
- ar->k_ar.ar_arg_egid = p->p_ucred->cr_groups[0];
- ar->k_ar.ar_arg_ruid = p->p_ucred->cr_ruid;
- ar->k_ar.ar_arg_rgid = p->p_ucred->cr_rgid;
- ar->k_ar.ar_arg_asid = p->p_ucred->cr_audit.ai_asid;
- ar->k_ar.ar_arg_termid_addr = p->p_ucred->cr_audit.ai_termid;
+ cred = p->p_ucred;
+ ar->k_ar.ar_arg_auid = cred->cr_audit.ai_auid;
+ ar->k_ar.ar_arg_euid = cred->cr_uid;
+ ar->k_ar.ar_arg_egid = cred->cr_groups[0];
+ ar->k_ar.ar_arg_ruid = cred->cr_ruid;
+ ar->k_ar.ar_arg_rgid = cred->cr_rgid;
+ ar->k_ar.ar_arg_asid = cred->cr_audit.ai_asid;
+ ar->k_ar.ar_arg_termid_addr = cred->cr_audit.ai_termid;
ar->k_ar.ar_arg_pid = p->p_pid;
ARG_SET_VALID(ar, ARG_AUID | ARG_EUID | ARG_EGID | ARG_RUID |
ARG_RGID | ARG_ASID | ARG_TERMID_ADDR | ARG_PID | ARG_PROCESS);
OpenPOWER on IntegriCloud