diff options
| author | Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> | 2013-01-15 15:58:25 -0500 | 
|---|---|---|
| committer | Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> | 2013-01-15 15:58:25 -0500 | 
| commit | 7bcc1ec07748cae3552dc9b46701c117926c8923 (patch) | |
| tree | 2b3edc7de77ca306b2559ae341077094bac8c4a2 /net/ipv4/tcp_input.c | |
| parent | e5c702d3b268066dc70d619ecff06a08065f343f (diff) | |
| parent | 29594404d7fe73cd80eaa4ee8c43dcc53970c60e (diff) | |
| download | olio-linux-3.10-7bcc1ec07748cae3552dc9b46701c117926c8923.tar.xz olio-linux-3.10-7bcc1ec07748cae3552dc9b46701c117926c8923.zip  | |
Merge tag 'v3.7' into stable/for-linus-3.8
Linux 3.7
* tag 'v3.7': (833 commits)
  Linux 3.7
  Input: matrix-keymap - provide proper module license
  Revert "revert "Revert "mm: remove __GFP_NO_KSWAPD""" and associated damage
  ipv4: ip_check_defrag must not modify skb before unsharing
  Revert "mm: avoid waking kswapd for THP allocations when compaction is deferred or contended"
  inet_diag: validate port comparison byte code to prevent unsafe reads
  inet_diag: avoid unsafe and nonsensical prefix matches in inet_diag_bc_run()
  inet_diag: validate byte code to prevent oops in inet_diag_bc_run()
  inet_diag: fix oops for IPv4 AF_INET6 TCP SYN-RECV state
  mm: vmscan: fix inappropriate zone congestion clearing
  vfs: fix O_DIRECT read past end of block device
  net: gro: fix possible panic in skb_gro_receive()
  tcp: bug fix Fast Open client retransmission
  tmpfs: fix shared mempolicy leak
  mm: vmscan: do not keep kswapd looping forever due to individual uncompactable zones
  mm: compaction: validate pfn range passed to isolate_freepages_block
  mmc: sh-mmcif: avoid oops on spurious interrupts (second try)
  Revert misapplied "mmc: sh-mmcif: avoid oops on spurious interrupts"
  mmc: sdhci-s3c: fix missing clock for gpio card-detect
  lib/Makefile: Fix oid_registry build dependency
  ...
Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Conflicts:
	arch/arm/xen/enlighten.c
	drivers/xen/Makefile
[We need to have the v3.7 base as the 'for-3.8' was based off v3.7-rc3
and there are some patches in v3.7-rc6 that we to have in our branch]
Diffstat (limited to 'net/ipv4/tcp_input.c')
| -rw-r--r-- | net/ipv4/tcp_input.c | 24 | 
1 files changed, 18 insertions, 6 deletions
diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c index 1db66398358..181fc8234a5 100644 --- a/net/ipv4/tcp_input.c +++ b/net/ipv4/tcp_input.c @@ -4529,6 +4529,9 @@ int tcp_send_rcvq(struct sock *sk, struct msghdr *msg, size_t size)  	struct tcphdr *th;  	bool fragstolen; +	if (size == 0) +		return 0; +  	skb = alloc_skb(size + sizeof(*th), sk->sk_allocation);  	if (!skb)  		goto err; @@ -5310,11 +5313,6 @@ static bool tcp_validate_incoming(struct sock *sk, struct sk_buff *skb,  		goto discard;  	} -	/* ts_recent update must be made after we are sure that the packet -	 * is in window. -	 */ -	tcp_replace_ts_recent(tp, TCP_SKB_CB(skb)->seq); -  	/* step 3: check security and precedence [ignored] */  	/* step 4: Check for a SYN @@ -5549,6 +5547,11 @@ step5:  	if (th->ack && tcp_ack(sk, skb, FLAG_SLOWPATH) < 0)  		goto discard; +	/* ts_recent update must be made after we are sure that the packet +	 * is in window. +	 */ +	tcp_replace_ts_recent(tp, TCP_SKB_CB(skb)->seq); +  	tcp_rcv_rtt_measure_ts(sk, skb);  	/* Process urgent data. */ @@ -5642,7 +5645,11 @@ static bool tcp_rcv_fastopen_synack(struct sock *sk, struct sk_buff *synack,  	tcp_fastopen_cache_set(sk, mss, cookie, syn_drop);  	if (data) { /* Retransmit unacked data in SYN */ -		tcp_retransmit_skb(sk, data); +		tcp_for_write_queue_from(data, sk) { +			if (data == tcp_send_head(sk) || +			    __tcp_retransmit_skb(sk, data)) +				break; +		}  		tcp_rearm_rto(sk);  		return true;  	} @@ -6127,6 +6134,11 @@ int tcp_rcv_state_process(struct sock *sk, struct sk_buff *skb,  	} else  		goto discard; +	/* ts_recent update must be made after we are sure that the packet +	 * is in window. +	 */ +	tcp_replace_ts_recent(tp, TCP_SKB_CB(skb)->seq); +  	/* step 6: check the URG bit */  	tcp_urg(sk, skb, th);  |