ipv6: udp: remove udp_v6_clear_sk()
authorEric Dumazet <edumazet@google.com>
Tue, 23 Aug 2016 18:39:26 +0000 (11:39 -0700)
committerDavid S. Miller <davem@davemloft.net>
Wed, 24 Aug 2016 06:23:50 +0000 (23:23 -0700)
Now RCU lookups of ipv6 udp sockets no longer dereference
pinet6 field, we can get rid of udp_v6_clear_sk() helper.

Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv6/udp.c
net/ipv6/udp_impl.h
net/ipv6/udplite.c

index 16512cf06e733ad8004b18cdb2cfcbcffacec605..9efe740ff6ddd6bbfc95cf598e4c09a25262ca88 100644 (file)
@@ -1424,17 +1424,6 @@ void udp6_proc_exit(struct net *net)
 }
 #endif /* CONFIG_PROC_FS */
 
-void udp_v6_clear_sk(struct sock *sk, int size)
-{
-       struct inet_sock *inet = inet_sk(sk);
-
-       /* we do not want to clear pinet6 field, because of RCU lookups */
-       sk_prot_clear_portaddr_nulls(sk, offsetof(struct inet_sock, pinet6));
-
-       size -= offsetof(struct inet_sock, pinet6) + sizeof(inet->pinet6);
-       memset(&inet->pinet6 + 1, 0, size);
-}
-
 /* ------------------------------------------------------------------------ */
 
 struct proto udpv6_prot = {
@@ -1466,7 +1455,6 @@ struct proto udpv6_prot = {
        .compat_setsockopt = compat_udpv6_setsockopt,
        .compat_getsockopt = compat_udpv6_getsockopt,
 #endif
-       .clear_sk          = udp_v6_clear_sk,
        .diag_destroy      = udp_abort,
 };
 
index 0682c031ccdc77da801c46851d7ad2163921fe19..f6eb1ab34f4bc50e321e74f129feee4118f03807 100644 (file)
@@ -29,8 +29,6 @@ int udpv6_recvmsg(struct sock *sk, struct msghdr *msg, size_t len, int noblock,
 int udpv6_queue_rcv_skb(struct sock *sk, struct sk_buff *skb);
 void udpv6_destroy_sock(struct sock *sk);
 
-void udp_v6_clear_sk(struct sock *sk, int size);
-
 #ifdef CONFIG_PROC_FS
 int udp6_seq_show(struct seq_file *seq, void *v);
 #endif
index 9cf097e206e931c6e3c184f22b8adcabedc4c03a..118057a5b7592fefdea37008099a2cc033507ca1 100644 (file)
@@ -56,7 +56,7 @@ struct proto udplitev6_prot = {
        .compat_setsockopt = compat_udpv6_setsockopt,
        .compat_getsockopt = compat_udpv6_getsockopt,
 #endif
-       .clear_sk          = udp_v6_clear_sk,
+       .clear_sk          = sk_prot_clear_portaddr_nulls,
 };
 
 static struct inet_protosw udplite6_protosw = {