diff options
Diffstat (limited to 'net/ipv4/tcp_input.c')
-rw-r--r-- | net/ipv4/tcp_input.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c index f240f57b2199..3e6dafcb1071 100644 --- a/net/ipv4/tcp_input.c +++ b/net/ipv4/tcp_input.c | |||
@@ -3710,7 +3710,7 @@ static int tcp_ack(struct sock *sk, struct sk_buff *skb, int flag) | |||
3710 | } | 3710 | } |
3711 | 3711 | ||
3712 | if ((flag & FLAG_FORWARD_PROGRESS) || !(flag & FLAG_NOT_DUP)) | 3712 | if ((flag & FLAG_FORWARD_PROGRESS) || !(flag & FLAG_NOT_DUP)) |
3713 | dst_confirm(sk->sk_dst_cache); | 3713 | dst_confirm(__sk_dst_get(sk)); |
3714 | 3714 | ||
3715 | return 1; | 3715 | return 1; |
3716 | 3716 | ||
@@ -3845,12 +3845,13 @@ void tcp_parse_options(struct sk_buff *skb, struct tcp_options_received *opt_rx, | |||
3845 | /* 16-bit multiple */ | 3845 | /* 16-bit multiple */ |
3846 | opt_rx->cookie_plus = opsize; | 3846 | opt_rx->cookie_plus = opsize; |
3847 | *hvpp = ptr; | 3847 | *hvpp = ptr; |
3848 | break; | ||
3848 | default: | 3849 | default: |
3849 | /* ignore option */ | 3850 | /* ignore option */ |
3850 | break; | 3851 | break; |
3851 | }; | 3852 | } |
3852 | break; | 3853 | break; |
3853 | }; | 3854 | } |
3854 | 3855 | ||
3855 | ptr += opsize-2; | 3856 | ptr += opsize-2; |
3856 | length -= opsize; | 3857 | length -= opsize; |
@@ -4319,7 +4320,7 @@ static void tcp_ofo_queue(struct sock *sk) | |||
4319 | } | 4320 | } |
4320 | 4321 | ||
4321 | if (!after(TCP_SKB_CB(skb)->end_seq, tp->rcv_nxt)) { | 4322 | if (!after(TCP_SKB_CB(skb)->end_seq, tp->rcv_nxt)) { |
4322 | SOCK_DEBUG(sk, "ofo packet was already received \n"); | 4323 | SOCK_DEBUG(sk, "ofo packet was already received\n"); |
4323 | __skb_unlink(skb, &tp->out_of_order_queue); | 4324 | __skb_unlink(skb, &tp->out_of_order_queue); |
4324 | __kfree_skb(skb); | 4325 | __kfree_skb(skb); |
4325 | continue; | 4326 | continue; |
@@ -4367,6 +4368,7 @@ static void tcp_data_queue(struct sock *sk, struct sk_buff *skb) | |||
4367 | if (TCP_SKB_CB(skb)->seq == TCP_SKB_CB(skb)->end_seq) | 4368 | if (TCP_SKB_CB(skb)->seq == TCP_SKB_CB(skb)->end_seq) |
4368 | goto drop; | 4369 | goto drop; |
4369 | 4370 | ||
4371 | skb_dst_drop(skb); | ||
4370 | __skb_pull(skb, th->doff * 4); | 4372 | __skb_pull(skb, th->doff * 4); |
4371 | 4373 | ||
4372 | TCP_ECN_accept_cwr(tp, skb); | 4374 | TCP_ECN_accept_cwr(tp, skb); |
@@ -5833,7 +5835,7 @@ int tcp_rcv_state_process(struct sock *sk, struct sk_buff *skb, | |||
5833 | if (tp->snd_una == tp->write_seq) { | 5835 | if (tp->snd_una == tp->write_seq) { |
5834 | tcp_set_state(sk, TCP_FIN_WAIT2); | 5836 | tcp_set_state(sk, TCP_FIN_WAIT2); |
5835 | sk->sk_shutdown |= SEND_SHUTDOWN; | 5837 | sk->sk_shutdown |= SEND_SHUTDOWN; |
5836 | dst_confirm(sk->sk_dst_cache); | 5838 | dst_confirm(__sk_dst_get(sk)); |
5837 | 5839 | ||
5838 | if (!sock_flag(sk, SOCK_DEAD)) | 5840 | if (!sock_flag(sk, SOCK_DEAD)) |
5839 | /* Wake up lingering close() */ | 5841 | /* Wake up lingering close() */ |