Date: Tue, 9 Apr 2002 12:21:09 -0700 (PDT) From: "Andrew R. Reiter" <arr@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 9457 for review Message-ID: <200204091921.g39JL9R62159@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://people.freebsd.org/~peter/p4db/chv.cgi?CH=9457 Change 9457 by arr@arr_shibby on 2002/04/09 12:20:46 - Use curthread instead of a passed in thread pointer in some places. - Remember crfree() our saved cred. - Rearrange a check of the shutdown flag, so we can better handle a bad situation -- this needs to possibly lock the flag on write Affected files ... ... //depot/projects/trustedbsd/audit/sys/kern/kern_audit.c#20 edit Differences ... ==== //depot/projects/trustedbsd/audit/sys/kern/kern_audit.c#20 (text+ko) ==== @@ -87,9 +87,6 @@ audit_record_generate_id(audit_id_t *id) { - /* - * XXX - */ return(*++id); } @@ -128,7 +125,6 @@ { struct vnode *vp; struct audit_info *ai; - struct ucred *cred; vm_zone_t zone; char *sptr; int err = 0; @@ -141,8 +137,7 @@ sptr = malloc(strlen(AUDLOG), M_TEMP, M_WAITOK|M_ZERO); strcpy(sptr, AUDLOG); - /* XXX curthread */ - vp = audit_write_init(sptr, curthread, &cred); + vp = audit_write_init(sptr, curthread, curthread->td_ucred); if (vp == NULL) panic("Unable to init audit system.\n"); @@ -151,7 +146,7 @@ panic("audit_init: unable to init audit record zone"); AINFO_LOCK(ai); - ai->ai_cred = cred; + ai->ai_cred = curthread->td_ucred; ai->ai_vp = vp; ai->ai_zone = zone; ai->ai_lname = sptr; @@ -169,15 +164,17 @@ SYSINIT(tbsd_audit, SI_ORDER_ANY, SI_SUB_MAC, &audit_init, NULL); void -audit_shutdown(int what, void *arg, struct thread *td) +audit_shutdown(void) { struct vnode *vp; - struct audit_info *ai = arg; + struct audit_info *ai; struct ucred *cred; vm_zone_t zone = NULL; char *ptr; audit_shutdown_flag = 1; + ai = &ainfo; + AINFO_LOCK(ai); cred = ai->ai_cred; vp = ai->ai_vp; @@ -185,10 +182,10 @@ ptr = ai->ai_lname; AINFO_UNLOCK(ai); mtx_destroy(&ai->ai_mtx); + free(ptr, M_TEMP); bzero(ai, sizeof(*ai)); - - free(ptr, M_TEMP); - audit_write_shutdown(vp, td, cred); + audit_write_shutdown(vp, curthread, cred); /* curthread ok? */ + crfree(cred); zdestroy(zone); } SYSUNINIT(tbsd_audit, SI_ORDER_ANY, SI_SUB_MAC, &audit_shutdown, NULL); @@ -300,19 +297,20 @@ mtx_lock(&record_queue_mtx); TAILQ_REMOVE(&record_queue, ar, ar_next); mtx_unlock(&record_queue_mtx); + + /* XXX Check flag here and hope it doesnt change. */ + if (audit_shutdown_flag) { + mtx_destroy(&record_queue_mtx); + kthread_exit(0); + } + if (ar) { - /* XXX */ (void)audit_record_write(ar, NULL, NULL); AINFO_LOCK(ai); z = ai->ai_zone; lease = &ai->ai_leased; AINFO_UNLOCK(ai); audit_record_free(ar, z, lease); - } else if (ar == NULL && audit_shutdown_flag) { - mtx_destroy(&record_queue_mtx); - kthread_exit(0); } - if (audit_shutdown_flag) - continue; } } To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe p4-projects" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200204091921.g39JL9R62159>