linux/net/ipv4
Ben Hutchings 75a518b09f tcp: Fix crash in TCP Fast Open
Commit 355a901e6c ("tcp: make connect() mem charging friendly")
changed tcp_send_syn_data() to perform an open-coded copy of the 'syn'
skb rather than using skb_copy_expand().

The open-coded copy does not cover the skb_shared_info::gso_segs
field, so in the new skb it is left set to 0.  When this commit was
backported into stable branches between 3.10.y and 3.16.7-ckty
inclusive, it triggered the BUG() in tcp_transmit_skb().

Since Linux 3.18 the GSO segment count is kept in the
tcp_skb_cb::tcp_gso_segs field and tcp_send_syn_data() does copy the
tcp_skb_cb structure to the new skb, so mainline and newer stable
branches are not affected.

Set skb_shared_info::gso_segs to the correct value of 1.

Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Acked-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2015-04-19 10:10:47 +02:00
..
netfilter netfilter: ipt_ULOG: fix info leaks 2014-07-06 18:54:15 -07:00
af_inet.c net: net_secret should not depend on TCP 2013-10-13 16:08:30 -07:00
ah4.c net: Add skb_unclone() helper function. 2013-02-15 15:10:37 -05:00
arp.c firewire net, ipv4 arp: Extend hardware address and remove driver-level packet inspection. 2013-03-26 12:32:13 -04:00
cipso_ipv4.c cipso: don't follow a NULL pointer when setsockopt() is called 2012-07-18 09:01:12 -07:00
datagram.c ipv4: fix a race in ip4_datagram_release_cb() 2014-06-26 15:12:38 -04:00
devinet.c ipv4: Fix runtime WARNING in rtmsg_ifa() 2014-03-06 21:30:03 -08:00
esp4.c esp4: fix error return code in esp_output() 2013-04-15 14:05:34 -04:00
fib_frontend.c fib_frontend: fix possible NULL pointer dereference 2014-02-06 11:08:16 -08:00
fib_lookup.h ipv4: Fix nexthop caching wrt. scoping. 2011-03-24 18:06:47 -07:00
fib_rules.c ipv4: Fix incorrect error code when adding an unreachable route 2014-12-06 15:05:46 -08:00
fib_semantics.c ipv4: fix nexthop attlen check in fib_nh_match 2014-11-14 08:47:53 -08:00
fib_trie.c fib_trie: remove potential out of bound access 2013-09-14 06:54:54 -07:00
gre.c gre: fix a possible skb leak 2013-06-25 16:07:44 -07:00
icmp.c ipv4: icmp: Fix pMTU handling for rare case 2014-07-28 08:00:04 -07:00
igmp.c inetpeer: get rid of ip_id_count 2014-08-14 09:24:15 +08:00
inet_connection_sock.c tcp: Remove TCPCT 2013-03-17 14:35:13 -04:00
inet_diag.c inet_diag: fix possible overflow in inet_diag_dump_one_icsk() 2015-03-26 15:00:55 +01:00
inet_fragment.c inet: frag: make sure forced eviction removes all frags 2014-04-14 06:42:15 -07:00
inet_hashtables.c net: do not call sock_put() on TIMEWAIT sockets 2013-11-04 04:31:00 -08:00
inet_lro.c ipv4: replace ip_fast_csum with csum_replace2 2013-03-15 09:12:25 -04:00
inet_timewait_sock.c hlist: drop the node parameter from iterators 2013-02-27 19:10:24 -08:00
inetpeer.c inetpeer: get rid of ip_id_count 2014-08-14 09:24:15 +08:00
ip_forward.c ipv4: try to cache dst_entries which would cause a redirect 2015-02-26 17:48:48 -08:00
ip_fragment.c ipv4: ip_check_defrag should not assume that skb_network_offset is zero 2015-03-18 13:22:26 +01:00
ip_gre.c gre: don't allow to add the same tunnel twice 2014-05-30 21:52:14 -07:00
ip_input.c net: Fix memory leak if TPROXY used with TCP early demux 2014-02-06 11:08:17 -08:00
ip_options.c ipv4: fix buffer overflow in ip_options_compile() 2014-07-28 08:00:06 -07:00
ip_output.c udp: only allow UFO for packets from SOCK_DGRAM sockets 2015-03-18 13:22:27 +01:00
ip_sockglue.c ip: zero sockaddr returned on error queue 2015-02-26 17:48:47 -08:00
ip_tunnel.c inetpeer: get rid of ip_id_count 2014-08-14 09:24:15 +08:00
ip_vti.c vti: don't allow to add the same tunnel twice 2014-05-30 21:52:15 -07:00
ipcomp.c xfrm: allow to avoid copying DSCP during encapsulation 2013-03-06 07:02:45 +01:00
ipconfig.c ipconfig: add informative timeout messages while waiting for carrier 2013-04-02 14:35:33 -04:00
ipip.c ipip, sit: fix ipv4_{update_pmtu,redirect} calls 2014-06-26 15:12:38 -04:00
ipmr.c inetpeer: get rid of ip_id_count 2014-08-14 09:24:15 +08:00
Kconfig Tunneling: use IP Tunnel stats APIs. 2013-03-26 12:27:19 -04:00
Makefile GRE: Refactor GRE tunneling code. 2013-03-26 12:27:18 -04:00
netfilter.c netfilter: add my copyright statements 2013-04-18 20:27:55 +02:00
ping.c ping: Fix race in free in receive path 2015-02-26 17:48:48 -08:00
proc.c net: Add MIB counters for checksum errors 2013-04-29 15:14:03 -04:00
protocol.c ipv4: Disallow non-namespace aware protocols to register. 2013-02-05 14:42:23 -05:00
raw.c inetpeer: get rid of ip_id_count 2014-08-14 09:24:15 +08:00
route.c ipv4: try to cache dst_entries which would cause a redirect 2015-02-26 17:48:48 -08:00
syncookies.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2013-04-22 20:32:51 -04:00
sysctl_net_ipv4.c tcp: TSO packets automatic sizing 2013-11-04 04:30:59 -08:00
tcp_bic.c tcp: fix undo after RTO for BIC 2012-01-20 14:17:26 -05:00
tcp_cong.c tcp: remove Appropriate Byte Count support 2013-02-05 14:51:16 -05:00
tcp_cubic.c tcp_cubic: fix the range of delayed_ack 2014-05-30 21:52:16 -07:00
tcp_diag.c inet_diag: Rename inet_diag_req into inet_diag_req_v2 2012-01-11 12:56:06 -08:00
tcp_fastopen.c tcp: TCP Fast Open Server - header & support functions 2012-08-31 20:02:18 -04:00
tcp_highspeed.c tcp: mark tcp_congestion_ops read_mostly 2011-03-10 00:40:17 -08:00
tcp_htcp.c tcp: mark tcp_congestion_ops read_mostly 2011-03-10 00:40:17 -08:00
tcp_hybla.c tcp: bool conversions 2012-05-17 14:59:59 -04:00
tcp_illinois.c net: fix divide by zero in tcp algorithm illinois 2012-11-01 11:55:59 -04:00
tcp_input.c tcp: fix false undo corner cases 2014-07-28 08:00:05 -07:00
tcp_ipv4.c ipv4: tcp: get rid of ugly unicast_sock 2015-02-26 17:48:48 -08:00
tcp_lp.c Fix common misspellings 2011-03-31 11:26:23 -03:00
tcp_memcontrol.c net: tcp_memcontrol: minor: remove unused variable 2013-04-14 15:41:49 -04:00
tcp_metrics.c tcp: metrics: Avoid duplicate entries with the same destination-IP 2014-02-06 11:08:16 -08:00
tcp_minisocks.c tcp: reset timer after any SYNACK retransmit 2013-04-29 15:14:03 -04:00
tcp_output.c tcp: Fix crash in TCP Fast Open 2015-04-19 10:10:47 +02:00
tcp_probe.c net: proc: change proc_net_remove to remove_proc_entry 2013-02-18 14:53:08 -05:00
tcp_scalable.c tcp: mark tcp_congestion_ops read_mostly 2011-03-10 00:40:17 -08:00
tcp_timer.c tcp: refactor F-RTO 2013-03-21 11:47:50 -04:00
tcp_vegas.c tcp: Fix integer-overflow in TCP vegas 2014-08-14 09:24:15 +08:00
tcp_vegas.h
tcp_veno.c tcp: Fix integer-overflows in TCP veno 2014-08-14 09:24:15 +08:00
tcp_westwood.c tcp: refactor F-RTO 2013-03-21 11:47:50 -04:00
tcp_yeah.c Fix common misspellings 2011-03-31 11:26:23 -03:00
tcp.c tcp: Fix divide by zero when pushing during tcp-repair 2014-07-28 08:00:04 -07:00
tunnel4.c net: Convert printks to pr_<level> 2012-03-11 23:42:51 -07:00
udp_diag.c udp_diag: Fix socket skipping within chain 2015-02-26 17:48:48 -08:00
udp_impl.h ipv4: fix checkpatch errors 2012-04-15 12:37:19 -04:00
udp.c Revert "net: update consumers of MSG_MORE to recognize MSG_SENDPAGE_NOTLAST" 2013-12-20 07:45:12 -08:00
udplite.c net: ipv4: Standardize prefixes for message logging 2012-03-12 17:05:21 -07:00
xfrm4_input.c net: Add skb_unclone() helper function. 2013-02-15 15:10:37 -05:00
xfrm4_mode_beet.c ipsec: be careful of non existing mac headers 2012-02-23 16:50:45 -05:00
xfrm4_mode_transport.c
xfrm4_mode_tunnel.c inetpeer: get rid of ip_id_count 2014-08-14 09:24:15 +08:00
xfrm4_output.c xfrm4: Don't call icmp_send on local error 2011-07-01 17:33:19 -07:00
xfrm4_policy.c xfrm: make gc_thresh configurable in all namespaces 2013-02-06 11:36:29 +01:00
xfrm4_state.c net: Add export.h for EXPORT_SYMBOL/THIS_MODULE to non-modules 2011-10-31 19:30:30 -04:00
xfrm4_tunnel.c net: ipv4: Standardize prefixes for message logging 2012-03-12 17:05:21 -07:00