net: remove inet6_reqsk_alloc
authorOctavian Purdila <octavian.purdila@intel.com>
Wed, 25 Jun 2014 14:09:52 +0000 (17:09 +0300)
committerDavid S. Miller <davem@davemloft.net>
Fri, 27 Jun 2014 22:53:35 +0000 (15:53 -0700)
Since pktops is only used for IPv6 only and opts is used for IPv4
only, we can move these fields into a union and this allows us to drop
the inet6_reqsk_alloc function as after this change it becomes
equivalent with inet_reqsk_alloc.

This patch also fixes a kmemcheck issue in the IPv6 stack: the flags
field was not annotated after a request_sock was allocated.

Signed-off-by: Octavian Purdila <octavian.purdila@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/linux/ipv6.h
include/net/inet_sock.h
net/dccp/ipv6.c
net/ipv6/syncookies.c
net/ipv6/tcp_ipv6.c

index 2faef339d8f2bc2f0b9a4cc08446f21ea7879d50..c811300b0b0c9fe2b7a585be3ea5a1ad64c1cba1 100644 (file)
@@ -256,16 +256,6 @@ static inline struct ipv6_pinfo * inet6_sk(const struct sock *__sk)
        return inet_sk(__sk)->pinet6;
 }
 
-static inline struct request_sock *inet6_reqsk_alloc(struct request_sock_ops *ops)
-{
-       struct request_sock *req = reqsk_alloc(ops);
-
-       if (req)
-               inet_rsk(req)->pktopts = NULL;
-
-       return req;
-}
-
 static inline struct raw6_sock *raw6_sk(const struct sock *sk)
 {
        return (struct raw6_sock *)sk;
index b1edf17bec01130f9751747c4d092e5de50aaeac..a829b77523cf3f28704dbc593ebf112802886951 100644 (file)
@@ -88,8 +88,10 @@ struct inet_request_sock {
                                acked      : 1,
                                no_srccheck: 1;
        kmemcheck_bitfield_end(flags);
-       struct ip_options_rcu   *opt;
-       struct sk_buff          *pktopts;
+       union {
+               struct ip_options_rcu   *opt;
+               struct sk_buff          *pktopts;
+       };
        u32                     ir_mark;
 };
 
index 4db3c2a1679cf24d668f0970d448af37aef8acda..04cb17d4b0cea9e9a0eac62f7e7f7135d7b9337c 100644 (file)
@@ -386,7 +386,7 @@ static int dccp_v6_conn_request(struct sock *sk, struct sk_buff *skb)
        if (sk_acceptq_is_full(sk) && inet_csk_reqsk_queue_young(sk) > 1)
                goto drop;
 
-       req = inet6_reqsk_alloc(&dccp6_request_sock_ops);
+       req = inet_reqsk_alloc(&dccp6_request_sock_ops);
        if (req == NULL)
                goto drop;
 
index a822b880689b5fea5adeed30956afd2328a9c8b9..83cea1d39466affce703d7c1b737a386bf3faecf 100644 (file)
@@ -187,7 +187,7 @@ struct sock *cookie_v6_check(struct sock *sk, struct sk_buff *skb)
                goto out;
 
        ret = NULL;
-       req = inet6_reqsk_alloc(&tcp6_request_sock_ops);
+       req = inet_reqsk_alloc(&tcp6_request_sock_ops);
        if (!req)
                goto out;
 
index a962455471bafab27599e2cb5bd9941cbd57cc1a..5e2d7e655c0f3706dd494978968a9412ab027db7 100644 (file)
@@ -1010,7 +1010,7 @@ static int tcp_v6_conn_request(struct sock *sk, struct sk_buff *skb)
                goto drop;
        }
 
-       req = inet6_reqsk_alloc(&tcp6_request_sock_ops);
+       req = inet_reqsk_alloc(&tcp6_request_sock_ops);
        if (req == NULL)
                goto drop;