/* Allocates an skb, builds the netlink message, and sends it to the pid. No failure notifications.  */
void audit_send_reply(int pid, int seq, int type, int done, int multi, void *payload, int size)
/* Allocates an skb, builds the netlink message, and sends it to the pid. No failure notifications.  */
void audit_send_reply(int pid, int seq, int type, int done, int multi, void *payload, int size)
{
	struct sk_buff *skb;
	struct task_struct *tsk;
	struct audit_reply *reply = kmalloc(sizeof(struct audit_reply),
					    GFP_KERNEL);
	if (!reply)
		return;
	skb = audit_make_reply(pid, seq, type, done, multi, payload, size);
	if (!skb)
		goto out;
	reply->pid = pid;
	reply->skb = skb;
	tsk = kthread_run(audit_send_reply_thread, reply, "audit_send_reply");
	if (!IS_ERR(tsk))
		return;
	kfree_skb(skb);
out:
	kfree(reply);
}