From: Ying Xue Date: Mon, 16 Mar 2015 10:19:12 +0000 (+0800) Subject: net: kernel socket should be released in init_net namespace X-Git-Tag: v4.1-rc1~128^2~229 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=c243d7e20996254f89c28d4838b5feca735c030d;p=uclinux-h8%2Flinux.git 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 Signed-off-by: David S. Miller --- 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);