diff options
Diffstat (limited to 'net/core/sock.c')
| -rw-r--r-- | net/core/sock.c | 32 | 
1 files changed, 5 insertions, 27 deletions
diff --git a/net/core/sock.c b/net/core/sock.c index fd7b41edf1ce..c73e28fc9c2a 100644 --- a/net/core/sock.c +++ b/net/core/sock.c @@ -1315,24 +1315,6 @@ static void sock_copy(struct sock *nsk, const struct sock *osk)  #endif  } -void sk_prot_clear_portaddr_nulls(struct sock *sk, int size) -{ -	unsigned long nulls1, nulls2; - -	nulls1 = offsetof(struct sock, __sk_common.skc_node.next); -	nulls2 = offsetof(struct sock, __sk_common.skc_portaddr_node.next); -	if (nulls1 > nulls2) -		swap(nulls1, nulls2); - -	if (nulls1 != 0) -		memset((char *)sk, 0, nulls1); -	memset((char *)sk + nulls1 + sizeof(void *), 0, -	       nulls2 - nulls1 - sizeof(void *)); -	memset((char *)sk + nulls2 + sizeof(void *), 0, -	       size - nulls2 - sizeof(void *)); -} -EXPORT_SYMBOL(sk_prot_clear_portaddr_nulls); -  static struct sock *sk_prot_alloc(struct proto *prot, gfp_t priority,  		int family)  { @@ -1344,12 +1326,8 @@ static struct sock *sk_prot_alloc(struct proto *prot, gfp_t priority,  		sk = kmem_cache_alloc(slab, priority & ~__GFP_ZERO);  		if (!sk)  			return sk; -		if (priority & __GFP_ZERO) { -			if (prot->clear_sk) -				prot->clear_sk(sk, prot->obj_size); -			else -				sk_prot_clear_nulls(sk, prot->obj_size); -		} +		if (priority & __GFP_ZERO) +			sk_prot_clear_nulls(sk, prot->obj_size);  	} else  		sk = kmalloc(prot->obj_size, priority); @@ -1385,6 +1363,7 @@ static void sk_prot_free(struct proto *prot, struct sock *sk)  	slab = prot->slab;  	cgroup_sk_free(&sk->sk_cgrp_data); +	mem_cgroup_sk_free(sk);  	security_sk_free(sk);  	if (slab != NULL)  		kmem_cache_free(slab, sk); @@ -1421,6 +1400,7 @@ struct sock *sk_alloc(struct net *net, int family, gfp_t priority,  		sock_net_set(sk, net);  		atomic_set(&sk->sk_wmem_alloc, 1); +		mem_cgroup_sk_alloc(sk);  		cgroup_sk_alloc(&sk->sk_cgrp_data);  		sock_update_classid(&sk->sk_cgrp_data);  		sock_update_netprioidx(&sk->sk_cgrp_data); @@ -1567,6 +1547,7 @@ struct sock *sk_clone_lock(const struct sock *sk, const gfp_t priority)  		newsk->sk_incoming_cpu = raw_smp_processor_id();  		atomic64_set(&newsk->sk_cookie, 0); +		mem_cgroup_sk_alloc(newsk);  		cgroup_sk_alloc(&newsk->sk_cgrp_data);  		/* @@ -1591,9 +1572,6 @@ struct sock *sk_clone_lock(const struct sock *sk, const gfp_t priority)  		sk_set_socket(newsk, NULL);  		newsk->sk_wq = NULL; -		if (mem_cgroup_sockets_enabled && sk->sk_memcg) -			sock_update_memcg(newsk); -  		if (newsk->sk_prot->sockets_allocated)  			sk_sockets_allocated_inc(newsk);  |