@@ -207,6 +207,7 @@ struct audit_buffer {
struct audit_reply {
__u32 portid;
struct net *net;
+ netns_tracker ns_tracker;
struct sk_buff *skb;
};
@@ -938,7 +939,7 @@ static void audit_free_reply(struct audit_reply *reply)
kfree_skb(reply->skb);
if (reply->net)
- put_net(reply->net);
+ put_net_track(reply->net, &reply->ns_tracker);
kfree(reply);
}
@@ -982,7 +983,8 @@ static void audit_send_reply(struct sk_buff *request_skb, int seq, int type, int
reply->skb = audit_make_reply(seq, type, done, multi, payload, size);
if (!reply->skb)
goto err;
- reply->net = get_net(sock_net(NETLINK_CB(request_skb).sk));
+ reply->net = get_net_track(sock_net(NETLINK_CB(request_skb).sk),
+ &reply->ns_tracker, GFP_KERNEL);
reply->portid = NETLINK_CB(request_skb).portid;
tsk = kthread_run(audit_send_reply_thread, reply, "audit_send_reply");