From fe6257202a2cedb4821001f81f34045fd55b7d32 Mon Sep 17 00:00:00 2001 From: "Denis V. Lunev" Date: Wed, 16 Apr 2008 01:59:46 -0700 Subject: [PATCH] --- yaml --- r: 90787 b: refs/heads/master c: 65a18ec58e5e6186103f62f720acea94dfb26f4e h: refs/heads/master i: 90785: b7a258ed33bc70519dd2e9cbcf9e5376a153dba0 90783: c4d5f595632094311494ff0419b28cf15050d630 v: v3 --- [refs] | 2 +- trunk/include/net/sock.h | 2 +- trunk/net/core/sock.c | 1 + 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 56bb7df4b2ed..b3d922f63284 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 5d1e4468a7705db7c1415a65fd16f07113afc1b2 +refs/heads/master: 65a18ec58e5e6186103f62f720acea94dfb26f4e diff --git a/trunk/include/net/sock.h b/trunk/include/net/sock.h index 09255eae93e9..dc42b44c2aa1 100644 --- a/trunk/include/net/sock.h +++ b/trunk/include/net/sock.h @@ -1314,7 +1314,7 @@ void sock_net_set(struct sock *sk, struct net *net) static inline void sk_change_net(struct sock *sk, struct net *net) { put_net(sock_net(sk)); - sock_net_set(sk, net); + sock_net_set(sk, hold_net(net)); } extern void sock_enable_timestamp(struct sock *sk); diff --git a/trunk/net/core/sock.c b/trunk/net/core/sock.c index c0ecbdcf75d8..54c836a2216b 100644 --- a/trunk/net/core/sock.c +++ b/trunk/net/core/sock.c @@ -1001,6 +1001,7 @@ void sk_release_kernel(struct sock *sk) sock_hold(sk); sock_release(sk->sk_socket); + release_net(sock_net(sk)); sock_net_set(sk, get_net(&init_net)); sock_put(sk); }