diff options
author | Olof Johansson <olof@lixom.net> | 2012-11-06 06:48:05 -0800 |
---|---|---|
committer | Olof Johansson <olof@lixom.net> | 2012-11-06 06:48:05 -0800 |
commit | 3b19119b95a52200c8ae3df3aa89c21c9a1a8894 (patch) | |
tree | 3ae74b8a35b3d1f639a68c1690af1c06e14a1571 /net/ipv4/tcp_input.c | |
parent | ccb1cfcb964fa8a8acd58b7783b2e82d7ad7975b (diff) | |
parent | e095c0d122c09efabe7d4136ce77f72c636c4879 (diff) | |
download | talos-obmc-linux-3b19119b95a52200c8ae3df3aa89c21c9a1a8894.tar.gz talos-obmc-linux-3b19119b95a52200c8ae3df3aa89c21c9a1a8894.zip |
Merge tag 'calxeda-ecx-2000' of git://sources.calxeda.com/kernel/linux into next/soc
Support for Calxeda ECX-2000 SOC from Rob Herring
* tag 'calxeda-ecx-2000' of git://sources.calxeda.com/kernel/linux:
ARM: highbank: Add initial ECX-2000 support
ARM: highbank: abstract out SCU usage
ARM: smp_twd: don't warn on no DT node
ARM: dts: Add Calxeda ECX-2000 support
ARM: highbank: enable coherent DMA for xgmac in dts
ARM: highbank: disable unused sdhci and gpio in dts
+ sync to Linux 3.7-rc3
Diffstat (limited to 'net/ipv4/tcp_input.c')
-rw-r--r-- | net/ipv4/tcp_input.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c index 432c36649db3..1db663983587 100644 --- a/net/ipv4/tcp_input.c +++ b/net/ipv4/tcp_input.c @@ -5646,6 +5646,7 @@ static bool tcp_rcv_fastopen_synack(struct sock *sk, struct sk_buff *synack, tcp_rearm_rto(sk); return true; } + tp->syn_data_acked = tp->syn_data; return false; } @@ -5963,7 +5964,7 @@ int tcp_rcv_state_process(struct sock *sk, struct sk_buff *skb, req = tp->fastopen_rsk; if (req != NULL) { - BUG_ON(sk->sk_state != TCP_SYN_RECV && + WARN_ON_ONCE(sk->sk_state != TCP_SYN_RECV && sk->sk_state != TCP_FIN_WAIT1); if (tcp_check_req(sk, skb, req, NULL, true) == NULL) @@ -6052,7 +6053,15 @@ int tcp_rcv_state_process(struct sock *sk, struct sk_buff *skb, * ACK we have received, this would have acknowledged * our SYNACK so stop the SYNACK timer. */ - if (acceptable && req != NULL) { + if (req != NULL) { + /* Return RST if ack_seq is invalid. + * Note that RFC793 only says to generate a + * DUPACK for it but for TCP Fast Open it seems + * better to treat this case like TCP_SYN_RECV + * above. + */ + if (!acceptable) + return 1; /* We no longer need the request sock. */ reqsk_fastopen_remove(sk, req, false); tcp_rearm_rto(sk); |