|
@@ -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;
|