From: Pavel Emelyanov Date: Thu, 1 Nov 2007 07:31:26 +0000 (-0700) Subject: [NET]: Move the get_net() from sock_copy() X-Git-Tag: v2.6.24-rc2~56^2~13 X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1e2e6b89f1d3152da0606d23e65e8760bf62a4c3;p=linux-2.6 [NET]: Move the get_net() from sock_copy() The sock_copy() is supposed to just clone the socket. In a perfect world it has to be just memcpy, but we have to handle the security mark correctly. All the extra setup must be performed in sk_clone() call, so move the get_net() into more proper place. Signed-off-by: Pavel Emelyanov Signed-off-by: David S. Miller --- diff --git a/net/core/sock.c b/net/core/sock.c index fdacf9c8f1..9c2dbfaca6 100644 --- a/net/core/sock.c +++ b/net/core/sock.c @@ -864,7 +864,6 @@ static void sock_copy(struct sock *nsk, const struct sock *osk) #endif memcpy(nsk, osk, osk->sk_prot->obj_size); - get_net(nsk->sk_net); #ifdef CONFIG_SECURITY_NETWORK nsk->sk_security = sptr; security_sk_clone(osk, nsk); @@ -958,6 +957,7 @@ struct sock *sk_clone(const struct sock *sk, const gfp_t priority) sock_copy(newsk, sk); /* SANITY */ + get_net(newsk->sk_net); sk_node_init(&newsk->sk_node); sock_lock_init(newsk); bh_lock_sock(newsk);