aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv4/tcp_output.c
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2013-04-22 20:32:51 -0400
committerDavid S. Miller <davem@davemloft.net>2013-04-22 20:32:51 -0400
commit6e0895c2ea326cc4bb11e8fa2f654628d5754c31 (patch)
tree7089303ac11a12edc43a8c4fa1b23974e10937ea /net/ipv4/tcp_output.c
parent55fbbe46e9eb3cbe6c335503f5550855a1128dce (diff)
parent60d509fa6a9c4653a86ad830e4c4b30360b23f0e (diff)
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Conflicts: drivers/net/ethernet/emulex/benet/be_main.c drivers/net/ethernet/intel/igb/igb_main.c drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c include/net/scm.h net/batman-adv/routing.c net/ipv4/tcp_input.c The e{uid,gid} --> {uid,gid} credentials fix conflicted with the cleanup in net-next to now pass cred structs around. The be2net driver had a bug fix in 'net' that overlapped with the VLAN interface changes by Patrick McHardy in net-next. An IGB conflict existed because in 'net' the build_skb() support was reverted, and in 'net-next' there was a comment style fix within that code. Several batman-adv conflicts were resolved by making sure that all calls to batadv_is_my_mac() are changed to have a new bat_priv first argument. Eric Dumazet's TS ECR fix in TCP in 'net' conflicted with the F-RTO rewrite in 'net-next', mostly overlapping changes. Thanks to Stephen Rothwell and Antonio Quartulli for help with several of these merge resolutions. Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv4/tcp_output.c')
-rw-r--r--net/ipv4/tcp_output.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c
index 5f28131eb37e..b735c23a961d 100644
--- a/net/ipv4/tcp_output.c
+++ b/net/ipv4/tcp_output.c
@@ -2353,8 +2353,12 @@ int __tcp_retransmit_skb(struct sock *sk, struct sk_buff *skb)
2353 */ 2353 */
2354 TCP_SKB_CB(skb)->when = tcp_time_stamp; 2354 TCP_SKB_CB(skb)->when = tcp_time_stamp;
2355 2355
2356 /* make sure skb->data is aligned on arches that require it */ 2356 /* make sure skb->data is aligned on arches that require it
2357 if (unlikely(NET_IP_ALIGN && ((unsigned long)skb->data & 3))) { 2357 * and check if ack-trimming & collapsing extended the headroom
2358 * beyond what csum_start can cover.
2359 */
2360 if (unlikely((NET_IP_ALIGN && ((unsigned long)skb->data & 3)) ||
2361 skb_headroom(skb) >= 0xFFFF)) {
2358 struct sk_buff *nskb = __pskb_copy(skb, MAX_TCP_HEADER, 2362 struct sk_buff *nskb = __pskb_copy(skb, MAX_TCP_HEADER,
2359 GFP_ATOMIC); 2363 GFP_ATOMIC);
2360 return nskb ? tcp_transmit_skb(sk, nskb, 0, GFP_ATOMIC) : 2364 return nskb ? tcp_transmit_skb(sk, nskb, 0, GFP_ATOMIC) :
@@ -2666,6 +2670,7 @@ struct sk_buff *tcp_make_synack(struct sock *sk, struct dst_entry *dst,
2666 skb_reserve(skb, MAX_TCP_HEADER); 2670 skb_reserve(skb, MAX_TCP_HEADER);
2667 2671
2668 skb_dst_set(skb, dst); 2672 skb_dst_set(skb, dst);
2673 security_skb_owned_by(skb, sk);
2669 2674
2670 mss = dst_metric_advmss(dst); 2675 mss = dst_metric_advmss(dst);
2671 if (tp->rx_opt.user_mss && tp->rx_opt.user_mss < mss) 2676 if (tp->rx_opt.user_mss && tp->rx_opt.user_mss < mss)