audit 0.9.17 released

David Woodhouse dwmw2 at infradead.org
Wed Jul 13 21:56:58 UTC 2005


On Wed, 2005-07-13 at 17:19 -0400, Linda Knippers wrote:
> 
> Since that last problem was so easy, I'll mention another that I
> have less info on as I've only seen it twice, both times on my ia64
> box, and I couldn't capture much data.
> 
> The problem I've seen is a panic while shutting down when there's
> a heavy audit load.  The message is this:

Bah. I should know better than to set precedents like that. audit.76 is
uploading; audit.77 is building with this...

--- linux-2.6.9/kernel/auditsc.c~	2005-07-13 21:34:12.000000000 +0100
+++ linux-2.6.9/kernel/auditsc.c	2005-07-13 22:29:33.000000000 +0100
@@ -802,7 +802,7 @@ static void audit_log_task_info(struct a
 	up_read(&mm->mmap_sem);
 }
 
-static void audit_log_exit(struct audit_context *context)
+static void audit_log_exit(struct audit_context *context, unsigned int gfp_mask)
 {
 	int i;
 	struct audit_buffer *ab;
@@ -810,7 +810,7 @@ static void audit_log_exit(struct audit_
 	struct audit_watch_info *winfo;
 	struct hlist_node *pos;
 
-	ab = audit_log_start(context, GFP_KERNEL, AUDIT_SYSCALL);
+	ab = audit_log_start(context, gfp_mask, AUDIT_SYSCALL);
 	if (!ab)
 		return;		/* audit_panic has been called */
 	audit_log_format(ab, "arch=%x syscall=%d",
@@ -957,9 +947,11 @@ void audit_free(struct task_struct *tsk)
 		return;
 
 	/* Check for system calls that do not go through the exit
-	 * function (e.g., exit_group), then free context block. */
+	 * function (e.g., exit_group), then free context block. 
+	 * We use GFP_ATOMIC here because we might be doing this 
+	 * in the context of the idle thread */
 	if (context->in_syscall && context->auditable)
-		audit_log_exit(context);
+		audit_log_exit(context, GFP_ATOMIC);
 
 	audit_free_context(context);
 }
@@ -1064,7 +1056,7 @@ void audit_syscall_exit(struct task_stru
 		return;
 
 	if (context->in_syscall && context->auditable)
-		audit_log_exit(context);
+		audit_log_exit(context, GFP_KERNEL);
 
 	context->in_syscall = 0;
 	context->auditable  = 0;

-- 
dwmw2




More information about the Linux-audit mailing list