PERFORCE change 84202 for review
Robert Watson
rwatson at FreeBSD.org
Sat Sep 24 13:05:39 GMT 2005
http://perforce.freebsd.org/chv.cgi?CH=84202
Change 84202 by rwatson at rwatson_peppercorn on 2005/09/24 13:05:05
staticize audit_init(), audit_shutdown(), since in FreeBSD they are
able to register themselves using linker sets rather than explicit
calls in centralized boot/shutdown code.
Register audit_shutdown() with the pre-sync shutdown code so that
auditing is turned off and the vnode unreferenced before file
systems are unmounted, which can otherwise result in a long delay
during shutdown.
Affected files ...
.. //depot/projects/trustedbsd/audit3/sys/bsm/audit_kernel.h#16 edit
.. //depot/projects/trustedbsd/audit3/sys/security/audit/kern_audit.c#37 edit
Differences ...
==== //depot/projects/trustedbsd/audit3/sys/bsm/audit_kernel.h#16 (text+ko) ====
@@ -240,8 +240,6 @@
void audit_abort(struct kaudit_record *ar);
void audit_commit(struct kaudit_record *ar, int error,
int retval);
-void audit_init(void);
-void audit_shutdown(void);
struct kaudit_record *audit_new(int event, struct thread *td);
==== //depot/projects/trustedbsd/audit3/sys/security/audit/kern_audit.c#37 (text+ko) ====
@@ -206,6 +206,11 @@
static int audit_isopen = 0;
static TAILQ_HEAD(, trigger_info) trigger_list;
+/*
+ * Forward declarations of static functions.
+ */
+static void audit_shutdown(void *arg, int howto);
+
static int
audit_open(struct cdev *dev, int oflags, int devtype, struct thread *td)
{
@@ -723,7 +728,7 @@
* synchronization primitives, worker thread, and trigger device node. Also
* call into the BSM assembly code to initialize it.
*/
-void
+static void
audit_init(void)
{
int error;
@@ -754,12 +759,16 @@
/* Initialize the BSM audit subsystem. */
kau_init();
+ TAILQ_INIT(&trigger_list);
+
+ /* Register shutdown handler. */
+ EVENTHANDLER_REGISTER(shutdown_pre_sync, audit_shutdown, NULL,
+ SHUTDOWN_PRI_FIRST);
+
error = kthread_create(audit_worker, NULL, &audit_thread, RFHIGHPID,
0, "audit_worker");
if (error != 0)
panic("audit_init: kthread_create returned %d", error);
-
- TAILQ_INIT(&trigger_list);
}
static void
@@ -842,10 +851,12 @@
}
/*
- * Drain the audit queue and close the log at shutdown.
+ * Drain the audit queue and close the log at shutdown. Note that this can
+ * be called both from the system shutdown path and also from audit
+ * configuration syscalls, so 'arg' and 'howto' are ignored.
*/
-void
-audit_shutdown(void)
+static void
+audit_shutdown(void *arg, int howto)
{
audit_rotate_vnode(NULL, NULL);
@@ -1065,7 +1076,7 @@
audit_suspended = 0;
if (udata.au_cond == AUC_DISABLED) {
audit_suspended = 1;
- audit_shutdown();
+ audit_shutdown(NULL, 0);
}
break;
case A_GETCLASS:
@@ -2448,18 +2459,6 @@
#else /* !AUDIT */
-void
-audit_init(void)
-{
-
-}
-
-void
-audit_shutdown(void)
-{
-
-}
-
int
audit(struct thread *td, struct audit_args *uap)
{
To Unsubscribe: send mail to majordomo at trustedbsd.org
with "unsubscribe trustedbsd-cvs" in the body of the message
More information about the trustedbsd-cvs
mailing list