summaryrefslogtreecommitdiff
path: root/net/core/sock.c
diff options
context:
space:
mode:
authorYing Xue <ying.xue@windriver.com>2015-03-16 13:19:12 +0300
committerDavid S. Miller <davem@davemloft.net>2015-03-16 23:25:06 +0300
commitc243d7e20996254f89c28d4838b5feca735c030d (patch)
tree13ce4c9af9215945e69a86300039396bfb1f04cd /net/core/sock.c
parentdb4374f48a6c31c02f6ad1d19b257c186b443c0c (diff)
downloadlinux-c243d7e20996254f89c28d4838b5feca735c030d.tar.xz
net: kernel socket should be released in init_net namespace
Creating a kernel socket with sock_create_kern() happens in "init_net" namespace, however, releasing it with sk_release_kernel() occurs in the current namespace which may be different with "init_net" namespace. Therefore, we should guarantee that the namespace in which a kernel socket is created is same as the socket is created. Signed-off-by: Ying Xue <ying.xue@windriver.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/core/sock.c')
-rw-r--r--net/core/sock.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/net/core/sock.c b/net/core/sock.c
index a950b54248da..d9f9e4825362 100644
--- a/net/core/sock.c
+++ b/net/core/sock.c
@@ -1454,8 +1454,8 @@ void sk_release_kernel(struct sock *sk)
return;
sock_hold(sk);
- sock_release(sk->sk_socket);
sock_net_set(sk, get_net(&init_net));
+ sock_release(sk->sk_socket);
sock_put(sk);
}
EXPORT_SYMBOL(sk_release_kernel);