diff options
Diffstat (limited to 'net/ipv4/tcp_minisocks.c')
-rw-r--r-- | net/ipv4/tcp_minisocks.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/net/ipv4/tcp_minisocks.c b/net/ipv4/tcp_minisocks.c index 015e7c67dc8..463d51b53d3 100644 --- a/net/ipv4/tcp_minisocks.c +++ b/net/ipv4/tcp_minisocks.c | |||
@@ -102,7 +102,7 @@ tcp_timewait_state_process(struct inet_timewait_sock *tw, struct sk_buff *skb, | |||
102 | 102 | ||
103 | if (th->doff > (sizeof(*th) >> 2) && tcptw->tw_ts_recent_stamp) { | 103 | if (th->doff > (sizeof(*th) >> 2) && tcptw->tw_ts_recent_stamp) { |
104 | tmp_opt.tstamp_ok = 1; | 104 | tmp_opt.tstamp_ok = 1; |
105 | tcp_parse_options(skb, &tmp_opt, 1); | 105 | tcp_parse_options(skb, &tmp_opt, 1, NULL); |
106 | 106 | ||
107 | if (tmp_opt.saw_tstamp) { | 107 | if (tmp_opt.saw_tstamp) { |
108 | tmp_opt.ts_recent = tcptw->tw_ts_recent; | 108 | tmp_opt.ts_recent = tcptw->tw_ts_recent; |
@@ -500,10 +500,11 @@ struct sock *tcp_check_req(struct sock *sk, struct sk_buff *skb, | |||
500 | int paws_reject = 0; | 500 | int paws_reject = 0; |
501 | struct tcp_options_received tmp_opt; | 501 | struct tcp_options_received tmp_opt; |
502 | struct sock *child; | 502 | struct sock *child; |
503 | struct dst_entry *dst = inet_csk_route_req(sk, req); | ||
503 | 504 | ||
504 | tmp_opt.saw_tstamp = 0; | 505 | tmp_opt.saw_tstamp = 0; |
505 | if (th->doff > (sizeof(struct tcphdr)>>2)) { | 506 | if (th->doff > (sizeof(struct tcphdr)>>2)) { |
506 | tcp_parse_options(skb, &tmp_opt, 0); | 507 | tcp_parse_options(skb, &tmp_opt, 0, dst); |
507 | 508 | ||
508 | if (tmp_opt.saw_tstamp) { | 509 | if (tmp_opt.saw_tstamp) { |
509 | tmp_opt.ts_recent = req->ts_recent; | 510 | tmp_opt.ts_recent = req->ts_recent; |
@@ -516,6 +517,8 @@ struct sock *tcp_check_req(struct sock *sk, struct sk_buff *skb, | |||
516 | } | 517 | } |
517 | } | 518 | } |
518 | 519 | ||
520 | dst_release(dst); | ||
521 | |||
519 | /* Check for pure retransmitted SYN. */ | 522 | /* Check for pure retransmitted SYN. */ |
520 | if (TCP_SKB_CB(skb)->seq == tcp_rsk(req)->rcv_isn && | 523 | if (TCP_SKB_CB(skb)->seq == tcp_rsk(req)->rcv_isn && |
521 | flg == TCP_FLAG_SYN && | 524 | flg == TCP_FLAG_SYN && |