diff options
| -rw-r--r-- | kernel/audit.c | 14 | 
1 files changed, 10 insertions, 4 deletions
diff --git a/kernel/audit.c b/kernel/audit.c index 8cc58031694..f9c6506536e 100644 --- a/kernel/audit.c +++ b/kernel/audit.c @@ -644,6 +644,16 @@ static int audit_receive_msg(struct sk_buff *skb, struct nlmsghdr *nlh)  	if (err)  		return err; +	/* As soon as there's any sign of userspace auditd, +	 * start kauditd to talk to it */ +	if (!kauditd_task) +		kauditd_task = kthread_run(kauditd_thread, NULL, "kauditd"); +	if (IS_ERR(kauditd_task)) { +		err = PTR_ERR(kauditd_task); +		kauditd_task = NULL; +		return err; +	} +  	seq  = nlh->nlmsg_seq;  	data = nlmsg_data(nlh); @@ -895,10 +905,6 @@ static int __init audit_init(void)  	else  		audit_sock->sk_sndtimeo = MAX_SCHEDULE_TIMEOUT; -	kauditd_task = kthread_run(kauditd_thread, NULL, "kauditd"); -	if (IS_ERR(kauditd_task)) -		return PTR_ERR(kauditd_task); -  	skb_queue_head_init(&audit_skb_queue);  	skb_queue_head_init(&audit_skb_hold_queue);  	audit_initialized = AUDIT_INITIALIZED;  |