Date: Tue, 9 Apr 2002 16:21:02 -0400 (EDT) From: "Andrew R. Reiter" <arr@FreeBSD.org> To: John Baldwin <jhb@FreeBSD.org> Cc: "Andrew R. Reiter" <arr@FreeBSD.org>, Perforce Change Reviews <perforce@FreeBSD.org> Subject: RE: PERFORCE change 9457 for review Message-ID: <Pine.NEB.3.96L.1020409162013.98285C-100000@fledge.watson.org> In-Reply-To: <XFMail.20020409152555.jhb@FreeBSD.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On Tue, 9 Apr 2002, John Baldwin wrote: : :On 09-Apr-2002 Andrew R. Reiter wrote: :> 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. : :You don't do a crhold on it though, which you probably should. Erps -- this is probably something I accidentally chopped. Most of this code is some stuff I'm cleaning out while I ponder a design change. Thanks for the feedback. Cheers, Andrew : :> - 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; : :Here, do a crhold() so you preserve your own reference in case this audit info :lives longer than the syscall. : :> 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; :> } :> } : :-- : :John Baldwin <jhb@FreeBSD.org> <>< http://www.FreeBSD.org/~jhb/ :"Power Users Use the Power to Serve!" - http://www.FreeBSD.org/ : -- Andrew R. Reiter arr@watson.org arr@FreeBSD.org 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?Pine.NEB.3.96L.1020409162013.98285C-100000>