Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6c925564 authored by Paul Moore's avatar Paul Moore
Browse files

audit: fixup audit_init()



Make sure everything is initialized before we start the kauditd_thread
and don't emit the "initialized" record until everything is finished.
We also panic with a descriptive message if we can't start the
kauditd_thread.

Signed-off-by: default avatarPaul Moore <paul@paul-moore.com>
parent 55a6f170
Loading
Loading
Loading
Loading
+8 −6
Original line number Diff line number Diff line
@@ -1180,21 +1180,23 @@ static int __init audit_init(void)
		audit_default ? "enabled" : "disabled");
	register_pernet_subsys(&audit_net_ops);

	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;
	audit_enabled = audit_default;
	audit_ever_enabled |= !!audit_default;

	audit_log(NULL, GFP_KERNEL, AUDIT_KERNEL, "initialized");

	for (i = 0; i < AUDIT_INODE_BUCKETS; i++)
		INIT_LIST_HEAD(&audit_inode_hash[i]);

	kauditd_task = kthread_run(kauditd_thread, NULL, "kauditd");
	if (IS_ERR(kauditd_task)) {
		int err = PTR_ERR(kauditd_task);
		panic("audit: failed to start the kauditd thread (%d)\n", err);
	}

	audit_log(NULL, GFP_KERNEL, AUDIT_KERNEL, "initialized");

	return 0;
}
__initcall(audit_init);