diff options
Diffstat (limited to 'net/ipv4/tcp_minisocks.c')
-rw-r--r-- | net/ipv4/tcp_minisocks.c | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/net/ipv4/tcp_minisocks.c b/net/ipv4/tcp_minisocks.c index 463d51b53d37..a9d34e224cb6 100644 --- a/net/ipv4/tcp_minisocks.c +++ b/net/ipv4/tcp_minisocks.c | |||
@@ -500,11 +500,10 @@ 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); | ||
504 | 503 | ||
505 | tmp_opt.saw_tstamp = 0; | 504 | if ((th->doff > (sizeof(struct tcphdr)>>2)) && (req->ts_recent)) { |
506 | if (th->doff > (sizeof(struct tcphdr)>>2)) { | 505 | tmp_opt.tstamp_ok = 1; |
507 | tcp_parse_options(skb, &tmp_opt, 0, dst); | 506 | tcp_parse_options(skb, &tmp_opt, 1, NULL); |
508 | 507 | ||
509 | if (tmp_opt.saw_tstamp) { | 508 | if (tmp_opt.saw_tstamp) { |
510 | tmp_opt.ts_recent = req->ts_recent; | 509 | tmp_opt.ts_recent = req->ts_recent; |
@@ -517,8 +516,6 @@ struct sock *tcp_check_req(struct sock *sk, struct sk_buff *skb, | |||
517 | } | 516 | } |
518 | } | 517 | } |
519 | 518 | ||
520 | dst_release(dst); | ||
521 | |||
522 | /* Check for pure retransmitted SYN. */ | 519 | /* Check for pure retransmitted SYN. */ |
523 | if (TCP_SKB_CB(skb)->seq == tcp_rsk(req)->rcv_isn && | 520 | if (TCP_SKB_CB(skb)->seq == tcp_rsk(req)->rcv_isn && |
524 | flg == TCP_FLAG_SYN && | 521 | flg == TCP_FLAG_SYN && |