|
@@ -57,6 +57,7 @@ void inet_twsk_put(struct inet_timewait_sock *tw)
|
|
|
printk(KERN_DEBUG "%s timewait_sock %p released\n",
|
|
|
tw->tw_prot->name, tw);
|
|
|
#endif
|
|
|
+ release_net(twsk_net(tw));
|
|
|
kmem_cache_free(tw->tw_prot->twsk_prot->twsk_slab, tw);
|
|
|
module_put(owner);
|
|
|
}
|
|
@@ -124,7 +125,7 @@ struct inet_timewait_sock *inet_twsk_alloc(const struct sock *sk, const int stat
|
|
|
tw->tw_hash = sk->sk_hash;
|
|
|
tw->tw_ipv6only = 0;
|
|
|
tw->tw_prot = sk->sk_prot_creator;
|
|
|
- twsk_net_set(tw, sock_net(sk));
|
|
|
+ twsk_net_set(tw, hold_net(sock_net(sk)));
|
|
|
atomic_set(&tw->tw_refcnt, 1);
|
|
|
inet_twsk_dead_node_init(tw);
|
|
|
__module_get(tw->tw_prot->owner);
|