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 8cc580316948..f9c6506536e6 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) | |||
644 | if (err) | 644 | if (err) |
645 | return err; | 645 | return err; |
646 | 646 | ||
647 | /* As soon as there's any sign of userspace auditd, | ||
648 | * start kauditd to talk to it */ | ||
649 | if (!kauditd_task) | ||
650 | kauditd_task = kthread_run(kauditd_thread, NULL, "kauditd"); | ||
651 | if (IS_ERR(kauditd_task)) { | ||
652 | err = PTR_ERR(kauditd_task); | ||
653 | kauditd_task = NULL; | ||
654 | return err; | ||
655 | } | ||
656 | |||
647 | seq = nlh->nlmsg_seq; | 657 | seq = nlh->nlmsg_seq; |
648 | data = nlmsg_data(nlh); | 658 | data = nlmsg_data(nlh); |
649 | 659 | ||
@@ -895,10 +905,6 @@ static int __init audit_init(void) | |||
895 | else | 905 | else |
896 | audit_sock->sk_sndtimeo = MAX_SCHEDULE_TIMEOUT; | 906 | audit_sock->sk_sndtimeo = MAX_SCHEDULE_TIMEOUT; |
897 | 907 | ||
898 | kauditd_task = kthread_run(kauditd_thread, NULL, "kauditd"); | ||
899 | if (IS_ERR(kauditd_task)) | ||
900 | return PTR_ERR(kauditd_task); | ||
901 | |||
902 | skb_queue_head_init(&audit_skb_queue); | 908 | skb_queue_head_init(&audit_skb_queue); |
903 | skb_queue_head_init(&audit_skb_hold_queue); | 909 | skb_queue_head_init(&audit_skb_hold_queue); |
904 | audit_initialized = AUDIT_INITIALIZED; | 910 | audit_initialized = AUDIT_INITIALIZED; |