diff options
-rw-r--r-- | net/ipv4/tcp_ipv4.c | 10 | ||||
-rw-r--r-- | net/ipv6/tcp_ipv6.c | 3 |
2 files changed, 9 insertions, 4 deletions
diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c index 7797d528701b..db3bf9be076f 100644 --- a/net/ipv4/tcp_ipv4.c +++ b/net/ipv4/tcp_ipv4.c | |||
@@ -544,6 +544,7 @@ static void tcp_v4_send_reset(struct sock *sk, struct sk_buff *skb) | |||
544 | #ifdef CONFIG_TCP_MD5SIG | 544 | #ifdef CONFIG_TCP_MD5SIG |
545 | struct tcp_md5sig_key *key; | 545 | struct tcp_md5sig_key *key; |
546 | #endif | 546 | #endif |
547 | struct net *net; | ||
547 | 548 | ||
548 | /* Never send a reset in response to a reset. */ | 549 | /* Never send a reset in response to a reset. */ |
549 | if (th->rst) | 550 | if (th->rst) |
@@ -594,7 +595,8 @@ static void tcp_v4_send_reset(struct sock *sk, struct sk_buff *skb) | |||
594 | sizeof(struct tcphdr), IPPROTO_TCP, 0); | 595 | sizeof(struct tcphdr), IPPROTO_TCP, 0); |
595 | arg.csumoffset = offsetof(struct tcphdr, check) / 2; | 596 | arg.csumoffset = offsetof(struct tcphdr, check) / 2; |
596 | 597 | ||
597 | ip_send_reply(dev_net(skb->dst->dev)->ipv4.tcp_sock, skb, | 598 | net = dev_net(skb->dst->dev); |
599 | ip_send_reply(net->ipv4.tcp_sock, skb, | ||
598 | &arg, arg.iov[0].iov_len); | 600 | &arg, arg.iov[0].iov_len); |
599 | 601 | ||
600 | TCP_INC_STATS_BH(TCP_MIB_OUTSEGS); | 602 | TCP_INC_STATS_BH(TCP_MIB_OUTSEGS); |
@@ -619,6 +621,7 @@ static void tcp_v4_send_ack(struct sk_buff *skb, u32 seq, u32 ack, | |||
619 | ]; | 621 | ]; |
620 | } rep; | 622 | } rep; |
621 | struct ip_reply_arg arg; | 623 | struct ip_reply_arg arg; |
624 | struct net *net = dev_net(skb->dev); | ||
622 | 625 | ||
623 | memset(&rep.th, 0, sizeof(struct tcphdr)); | 626 | memset(&rep.th, 0, sizeof(struct tcphdr)); |
624 | memset(&arg, 0, sizeof(arg)); | 627 | memset(&arg, 0, sizeof(arg)); |
@@ -668,7 +671,7 @@ static void tcp_v4_send_ack(struct sk_buff *skb, u32 seq, u32 ack, | |||
668 | if (oif) | 671 | if (oif) |
669 | arg.bound_dev_if = oif; | 672 | arg.bound_dev_if = oif; |
670 | 673 | ||
671 | ip_send_reply(dev_net(skb->dev)->ipv4.tcp_sock, skb, | 674 | ip_send_reply(net->ipv4.tcp_sock, skb, |
672 | &arg, arg.iov[0].iov_len); | 675 | &arg, arg.iov[0].iov_len); |
673 | 676 | ||
674 | TCP_INC_STATS_BH(TCP_MIB_OUTSEGS); | 677 | TCP_INC_STATS_BH(TCP_MIB_OUTSEGS); |
@@ -1505,6 +1508,7 @@ int tcp_v4_rcv(struct sk_buff *skb) | |||
1505 | struct tcphdr *th; | 1508 | struct tcphdr *th; |
1506 | struct sock *sk; | 1509 | struct sock *sk; |
1507 | int ret; | 1510 | int ret; |
1511 | struct net *net = dev_net(skb->dev); | ||
1508 | 1512 | ||
1509 | if (skb->pkt_type != PACKET_HOST) | 1513 | if (skb->pkt_type != PACKET_HOST) |
1510 | goto discard_it; | 1514 | goto discard_it; |
@@ -1539,7 +1543,7 @@ int tcp_v4_rcv(struct sk_buff *skb) | |||
1539 | TCP_SKB_CB(skb)->flags = iph->tos; | 1543 | TCP_SKB_CB(skb)->flags = iph->tos; |
1540 | TCP_SKB_CB(skb)->sacked = 0; | 1544 | TCP_SKB_CB(skb)->sacked = 0; |
1541 | 1545 | ||
1542 | sk = __inet_lookup(dev_net(skb->dev), &tcp_hashinfo, iph->saddr, | 1546 | sk = __inet_lookup(net, &tcp_hashinfo, iph->saddr, |
1543 | th->source, iph->daddr, th->dest, inet_iif(skb)); | 1547 | th->source, iph->daddr, th->dest, inet_iif(skb)); |
1544 | if (!sk) | 1548 | if (!sk) |
1545 | goto no_tcp_socket; | 1549 | goto no_tcp_socket; |
diff --git a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c index 30dbab7cc3cc..fc5f7166208a 100644 --- a/net/ipv6/tcp_ipv6.c +++ b/net/ipv6/tcp_ipv6.c | |||
@@ -1617,6 +1617,7 @@ static int tcp_v6_rcv(struct sk_buff *skb) | |||
1617 | struct tcphdr *th; | 1617 | struct tcphdr *th; |
1618 | struct sock *sk; | 1618 | struct sock *sk; |
1619 | int ret; | 1619 | int ret; |
1620 | struct net *net = dev_net(skb->dev); | ||
1620 | 1621 | ||
1621 | if (skb->pkt_type != PACKET_HOST) | 1622 | if (skb->pkt_type != PACKET_HOST) |
1622 | goto discard_it; | 1623 | goto discard_it; |
@@ -1648,7 +1649,7 @@ static int tcp_v6_rcv(struct sk_buff *skb) | |||
1648 | TCP_SKB_CB(skb)->flags = ipv6_get_dsfield(ipv6_hdr(skb)); | 1649 | TCP_SKB_CB(skb)->flags = ipv6_get_dsfield(ipv6_hdr(skb)); |
1649 | TCP_SKB_CB(skb)->sacked = 0; | 1650 | TCP_SKB_CB(skb)->sacked = 0; |
1650 | 1651 | ||
1651 | sk = __inet6_lookup(dev_net(skb->dev), &tcp_hashinfo, | 1652 | sk = __inet6_lookup(net, &tcp_hashinfo, |
1652 | &ipv6_hdr(skb)->saddr, th->source, | 1653 | &ipv6_hdr(skb)->saddr, th->source, |
1653 | &ipv6_hdr(skb)->daddr, ntohs(th->dest), | 1654 | &ipv6_hdr(skb)->daddr, ntohs(th->dest), |
1654 | inet6_iif(skb)); | 1655 | inet6_iif(skb)); |