aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--net/ipv4/tcp_ipv4.c4
-rw-r--r--net/ipv6/tcp_ipv6.c19
2 files changed, 8 insertions, 15 deletions
diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c
index 5fbf96552cac..2eb58844403c 100644
--- a/net/ipv4/tcp_ipv4.c
+++ b/net/ipv4/tcp_ipv4.c
@@ -111,7 +111,7 @@ void tcp_unhash(struct sock *sk)
111 inet_unhash(&tcp_hashinfo, sk); 111 inet_unhash(&tcp_hashinfo, sk);
112} 112}
113 113
114static inline __u32 tcp_v4_init_sequence(struct sock *sk, struct sk_buff *skb) 114static inline __u32 tcp_v4_init_sequence(struct sk_buff *skb)
115{ 115{
116 return secure_tcp_sequence_number(skb->nh.iph->daddr, 116 return secure_tcp_sequence_number(skb->nh.iph->daddr,
117 skb->nh.iph->saddr, 117 skb->nh.iph->saddr,
@@ -859,7 +859,7 @@ int tcp_v4_conn_request(struct sock *sk, struct sk_buff *skb)
859 goto drop_and_free; 859 goto drop_and_free;
860 } 860 }
861 861
862 isn = tcp_v4_init_sequence(sk, skb); 862 isn = tcp_v4_init_sequence(skb);
863 } 863 }
864 tcp_rsk(req)->snt_isn = isn; 864 tcp_rsk(req)->snt_isn = isn;
865 865
diff --git a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c
index 06b536b47f97..9a8e690fdf7c 100644
--- a/net/ipv6/tcp_ipv6.c
+++ b/net/ipv6/tcp_ipv6.c
@@ -106,19 +106,12 @@ static __inline__ u16 tcp_v6_check(struct tcphdr *th, int len,
106 return csum_ipv6_magic(saddr, daddr, len, IPPROTO_TCP, base); 106 return csum_ipv6_magic(saddr, daddr, len, IPPROTO_TCP, base);
107} 107}
108 108
109static __u32 tcp_v6_init_sequence(struct sock *sk, struct sk_buff *skb) 109static __u32 tcp_v6_init_sequence(struct sk_buff *skb)
110{ 110{
111 if (skb->protocol == htons(ETH_P_IPV6)) { 111 return secure_tcpv6_sequence_number(skb->nh.ipv6h->daddr.s6_addr32,
112 return secure_tcpv6_sequence_number(skb->nh.ipv6h->daddr.s6_addr32, 112 skb->nh.ipv6h->saddr.s6_addr32,
113 skb->nh.ipv6h->saddr.s6_addr32, 113 skb->h.th->dest,
114 skb->h.th->dest, 114 skb->h.th->source);
115 skb->h.th->source);
116 } else {
117 return secure_tcp_sequence_number(skb->nh.iph->daddr,
118 skb->nh.iph->saddr,
119 skb->h.th->dest,
120 skb->h.th->source);
121 }
122} 115}
123 116
124static int tcp_v6_connect(struct sock *sk, struct sockaddr *uaddr, 117static int tcp_v6_connect(struct sock *sk, struct sockaddr *uaddr,
@@ -822,7 +815,7 @@ static int tcp_v6_conn_request(struct sock *sk, struct sk_buff *skb)
822 treq->iif = inet6_iif(skb); 815 treq->iif = inet6_iif(skb);
823 816
824 if (isn == 0) 817 if (isn == 0)
825 isn = tcp_v6_init_sequence(sk,skb); 818 isn = tcp_v6_init_sequence(skb);
826 819
827 tcp_rsk(req)->snt_isn = isn; 820 tcp_rsk(req)->snt_isn = isn;
828 821