Eric Dumazet
bf50b606cf
tcp: repaired skbs must init their tso_segs
syzbot reported a WARN_ON(!tcp_skb_pcount(skb))
in tcp_send_loss_probe() [1]
This was caused by TCP_REPAIR sent skbs that inadvertenly
were missing a call to tcp_init_tso_segs()
[1]
WARNING: CPU: 1 PID: 0 at net/ipv4/tcp_output.c:2534 tcp_send_loss_probe+0x771/0x8a0 net/ipv4/tcp_output.c:2534
Kernel panic - not syncing: panic_on_warn set ...
CPU: 1 PID: 0 Comm: swapper/1 Not tainted 5.0.0-rc7+ #77
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
Call Trace:
<IRQ>
__dump_stack lib/dump_stack.c:77 [inline]
dump_stack+0x172/0x1f0 lib/dump_stack.c:113
panic+0x2cb/0x65c kernel/panic.c:214
__warn.cold+0x20/0x45 kernel/panic.c:571
report_bug+0x263/0x2b0 lib/bug.c:186
fixup_bug arch/x86/kernel/traps.c:178 [inline]
fixup_bug arch/x86/kernel/traps.c:173 [inline]
do_error_trap+0x11b/0x200 arch/x86/kernel/traps.c:271
do_invalid_op+0x37/0x50 arch/x86/kernel/traps.c:290
invalid_op+0x14/0x20 arch/x86/entry/entry_64.S:973
RIP: 0010:tcp_send_loss_probe+0x771/0x8a0 net/ipv4/tcp_output.c:2534
Code: 88 fc ff ff 4c 89 ef e8 ed 75 c8 fb e9 c8 fc ff ff e8 43 76 c8 fb e9 63 fd ff ff e8 d9 75 c8 fb e9 94 f9 ff ff e8 bf 03 91 fb <0f> 0b e9 7d fa ff ff e8 b3 03 91 fb 0f b6 1d 37 43 7a 03 31 ff 89
RSP: 0018:ffff8880ae907c60 EFLAGS: 00010206
RAX: ffff8880a989c340 RBX: 0000000000000000 RCX: ffffffff85dedbdb
RDX: 0000000000000100 RSI: ffffffff85dee0b1 RDI: 0000000000000005
RBP: ffff8880ae907c90 R08: ffff8880a989c340 R09: ffffed10147d1ae1
R10: ffffed10147d1ae0 R11: ffff8880a3e8d703 R12: ffff888091b90040
R13: ffff8880a3e8d540 R14: 0000000000008000 R15: ffff888091b90860
tcp_write_timer_handler+0x5c0/0x8a0 net/ipv4/tcp_timer.c:583
tcp_write_timer+0x10e/0x1d0 net/ipv4/tcp_timer.c:607
call_timer_fn+0x190/0x720 kernel/time/timer.c:1325
expire_timers kernel/time/timer.c:1362 [inline]
__run_timers kernel/time/timer.c:1681 [inline]
__run_timers kernel/time/timer.c:1649 [inline]
run_timer_softirq+0x652/0x1700 kernel/time/timer.c:1694
__do_softirq+0x266/0x95a kernel/softirq.c:292
invoke_softirq kernel/softirq.c:373 [inline]
irq_exit+0x180/0x1d0 kernel/softirq.c:413
exiting_irq arch/x86/include/asm/apic.h:536 [inline]
smp_apic_timer_interrupt+0x14a/0x570 arch/x86/kernel/apic/apic.c:1062
apic_timer_interrupt+0xf/0x20 arch/x86/entry/entry_64.S:807
</IRQ>
RIP: 0010:native_safe_halt+0x2/0x10 arch/x86/include/asm/irqflags.h:58
Code: ff ff ff 48 89 c7 48 89 45 d8 e8 59 0c a1 fa 48 8b 45 d8 e9 ce fe ff ff 48 89 df e8 48 0c a1 fa eb 82 90 90 90 90 90 90 fb f4 <c3> 0f 1f 00 66 2e 0f 1f 84 00 00 00 00 00 f4 c3 90 90 90 90 90 90
RSP: 0018:ffff8880a98afd78 EFLAGS: 00000286 ORIG_RAX: ffffffffffffff13
RAX: 1ffffffff1125061 RBX: ffff8880a989c340 RCX: 0000000000000000
RDX: dffffc0000000000 RSI: 0000000000000001 RDI: ffff8880a989cbbc
RBP: ffff8880a98afda8 R08: ffff8880a989c340 R09: 0000000000000000
R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000001
R13: ffffffff889282f8 R14: 0000000000000001 R15: 0000000000000000
arch_cpu_idle+0x10/0x20 arch/x86/kernel/process.c:555
default_idle_call+0x36/0x90 kernel/sched/idle.c:93
cpuidle_idle_call kernel/sched/idle.c:153 [inline]
do_idle+0x386/0x570 kernel/sched/idle.c:262
cpu_startup_entry+0x1b/0x20 kernel/sched/idle.c:353
start_secondary+0x404/0x5c0 arch/x86/kernel/smpboot.c:271
secondary_startup_64+0xa4/0xb0 arch/x86/kernel/head_64.S:243
Kernel Offset: disabled
Rebooting in 86400 seconds..
Fixes: 79861919b8 ("tcp: fix TCP_REPAIR xmit queue setup")
Signed-off-by: Eric Dumazet <edumazet@google.com>
Reported-by: syzbot <syzkaller@googlegroups.com>
Cc: Andrey Vagin <avagin@openvz.org>
Cc: Soheil Hassas Yeganeh <soheil@google.com>
Cc: Neal Cardwell <ncardwell@google.com>
Acked-by: Soheil Hassas Yeganeh <soheil@google.com>
Acked-by: Neal Cardwell <ncardwell@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
|
2019-02-23 18:43:25 -08:00 |
| .. |
|
bpfilter
|
net: bpfilter: disallow to remove bpfilter module while being used
|
2019-01-11 18:05:41 -08:00 |
|
netfilter
|
netfilter: nat: fix spurious connection timeouts
|
2019-02-11 17:43:17 +01:00 |
|
af_inet.c
|
net: use indirect call wrappers at GRO transport layer
|
2018-12-15 13:23:02 -08:00 |
|
ah4.c
|
net-ipv4: remove 2 always zero parameters from ipv4_redirect()
|
2018-09-26 20:30:55 -07:00 |
|
arp.c
|
net: Evict neighbor entries on carrier down
|
2018-10-12 09:47:39 -07:00 |
|
cipso_ipv4.c
|
net/ipv4: defensive cipso option parsing
|
2018-09-17 19:37:46 -07:00 |
|
datagram.c
|
ipv4: Allow sending multicast packets on specific i/f using VRF socket
|
2018-10-02 22:28:17 -07:00 |
|
devinet.c
|
netlink: fixup regression in RTM_GETADDR
|
2019-01-04 12:47:06 -08:00 |
|
esp4.c
|
esp: Skip TX bytes accounting when sending from a request socket
|
2019-01-28 11:20:58 +01:00 |
|
esp4_offload.c
|
net: use skb_sec_path helper in more places
|
2018-12-19 11:21:37 -08:00 |
|
fib_frontend.c
|
net: ipv4: Fix memory leak in network namespace dismantle
|
2019-01-15 13:33:44 -08:00 |
|
fib_lookup.h
|
|
|
|
fib_notifier.c
|
|
|
|
fib_rules.c
|
ipv4: fib_rules: Fix possible infinite loop in fib_empty_table
|
2018-12-30 12:57:04 -08:00 |
|
fib_semantics.c
|
net: Add extack argument to ip_fib_metrics_init
|
2018-11-06 15:00:45 -08:00 |
|
fib_trie.c
|
net: ipv4: Fix memory leak in network namespace dismantle
|
2019-01-15 13:33:44 -08:00 |
|
fou.c
|
fou, fou6: do not assume linear skbs
|
2019-01-15 22:01:31 -08:00 |
|
gre_demux.c
|
net: ip_gre: use erspan key field for tunnel lookup
|
2019-01-22 11:52:17 -08:00 |
|
gre_offload.c
|
|
|
|
icmp.c
|
net: Convert protocol error handlers from void to int
|
2018-11-08 17:13:08 -08:00 |
|
igmp.c
|
ipv4/igmp: fix v1/v2 switchback timeout based on rfc3376, 8.12
|
2018-10-29 20:26:06 -07:00 |
|
inet_connection_sock.c
|
inet: minor optimization for backlog setting in listen(2)
|
2018-11-07 22:31:07 -08:00 |
|
inet_diag.c
|
inet_diag: fix reporting cgroup classid and fallback to priority
|
2019-02-12 13:35:57 -05:00 |
|
inet_fragment.c
|
inet: frags: better deal with smp races
|
2018-11-08 18:40:30 -08:00 |
|
inet_hashtables.c
|
net: dccp: fix kernel crash on module load
|
2018-12-24 15:27:56 -08:00 |
|
inet_timewait_sock.c
|
|
|
|
inetpeer.c
|
net: ipv4: use a dedicated counter for icmp_v4 redirect packets
|
2019-02-08 21:50:15 -08:00 |
|
ip_forward.c
|
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
|
2018-12-20 11:53:36 -08:00 |
|
ip_fragment.c
|
net: ipv4: do not handle duplicate fragments as overlapping
|
2018-12-15 11:50:40 -08:00 |
|
ip_gre.c
|
net: ip_gre: do not report erspan_ver for gre or gretap
|
2019-02-21 16:02:10 -08:00 |
|
ip_input.c
|
net: Fix usage of pskb_trim_rcsum
|
2019-01-18 14:05:14 -08:00 |
|
ip_options.c
|
|
|
|
ip_output.c
|
sk_buff: add skb extension infrastructure
|
2018-12-19 11:21:37 -08:00 |
|
ip_sockglue.c
|
ip: on queued skb use skb_header_pointer instead of pskb_may_pull
|
2019-01-10 09:27:20 -05:00 |
|
ip_tunnel.c
|
ip_tunnel: Make none-tunnel-dst tunnel port work with lwtunnel
|
2019-01-24 17:54:12 -08:00 |
|
ip_tunnel_core.c
|
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
|
2018-12-24 16:19:56 -08:00 |
|
ip_vti.c
|
vti4: Fix a ipip packet processing bug in 'IPCOMP' virtual tunnel
|
2019-01-09 14:00:37 +01:00 |
|
ipcomp.c
|
net-ipv4: remove 2 always zero parameters from ipv4_redirect()
|
2018-09-26 20:30:55 -07:00 |
|
ipconfig.c
|
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
|
2018-12-20 11:53:36 -08:00 |
|
ipip.c
|
net: Convert protocol error handlers from void to int
|
2018-11-08 17:13:08 -08:00 |
|
ipmr.c
|
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
|
2018-12-20 11:53:36 -08:00 |
|
ipmr_base.c
|
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
|
2018-10-19 11:03:06 -07:00 |
|
Kconfig
|
|
|
|
Makefile
|
bpf, sockmap: convert to generic sk_msg interface
|
2018-10-15 12:23:19 -07:00 |
|
metrics.c
|
net: Add extack argument to ip_fib_metrics_init
|
2018-11-06 15:00:45 -08:00 |
|
netfilter.c
|
|
|
|
netlink.c
|
|
|
|
ping.c
|
ipv4: Allow sending multicast packets on specific i/f using VRF socket
|
2018-10-02 22:28:17 -07:00 |
|
proc.c
|
tcp: implement coalescing on backlog queue
|
2018-11-30 13:26:54 -08:00 |
|
protocol.c
|
fou, fou6: ICMP error handlers for FoU and GUE
|
2018-11-08 17:13:08 -08:00 |
|
raw.c
|
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
|
2018-12-20 11:53:36 -08:00 |
|
raw_diag.c
|
|
|
|
route.c
|
net: ipv4: use a dedicated counter for icmp_v4 redirect packets
|
2019-02-08 21:50:15 -08:00 |
|
syncookies.c
|
tcp: provide earliest departure time in skb->tstamp
|
2018-09-21 19:37:59 -07:00 |
|
sysctl_net_ipv4.c
|
net: provide a sysctl raw_l3mdev_accept for raw socket lookup with VRFs
|
2018-11-07 16:12:38 -08:00 |
|
tcp.c
|
tcp: clear icsk_backoff in tcp_write_queue_purge()
|
2019-02-17 15:46:58 -08:00 |
|
tcp_bbr.c
|
tcp_bbr: update comments to reflect pacing_margin_percent
|
2018-11-08 20:46:17 -08:00 |
|
tcp_bic.c
|
|
|
|
tcp_bpf.c
|
bpf: sk_msg, sock{map|hash} redirect through ULP
|
2018-12-20 23:47:09 +01:00 |
|
tcp_cdg.c
|
tcp: cdg: use tcp high resolution clock cache
|
2018-10-15 22:56:42 -07:00 |
|
tcp_cong.c
|
|
|
|
tcp_cubic.c
|
|
|
|
tcp_dctcp.c
|
tcp: refactor DCTCP ECN ACK handling
|
2018-10-10 22:26:00 -07:00 |
|
tcp_dctcp.h
|
tcp: refactor DCTCP ECN ACK handling
|
2018-10-10 22:26:00 -07:00 |
|
tcp_diag.c
|
|
|
|
tcp_fastopen.c
|
|
|
|
tcp_highspeed.c
|
|
|
|
tcp_htcp.c
|
|
|
|
tcp_hybla.c
|
|
|
|
tcp_illinois.c
|
|
|
|
tcp_input.c
|
tcp: take care of compressed acks in tcp_add_reno_sack()
|
2018-11-30 13:26:53 -08:00 |
|
tcp_ipv4.c
|
tcp: tcp_v4_err() should be more careful
|
2019-02-17 15:46:58 -08:00 |
|
tcp_lp.c
|
|
|
|
tcp_metrics.c
|
mm: convert totalram_pages and totalhigh_pages variables to atomic
|
2018-12-28 12:11:47 -08:00 |
|
tcp_minisocks.c
|
tcp: do not restart timewait timer on rst reception
|
2018-08-31 23:10:35 -07:00 |
|
tcp_nv.c
|
|
|
|
tcp_offload.c
|
net: use indirect call wrappers at GRO transport layer
|
2018-12-15 13:23:02 -08:00 |
|
tcp_output.c
|
tcp: repaired skbs must init their tso_segs
|
2019-02-23 18:43:25 -08:00 |
|
tcp_rate.c
|
tcp: introduce tcp_skb_timestamp_us() helper
|
2018-09-21 19:37:59 -07:00 |
|
tcp_recovery.c
|
tcp: introduce tcp_skb_timestamp_us() helper
|
2018-09-21 19:37:59 -07:00 |
|
tcp_scalable.c
|
|
|
|
tcp_timer.c
|
tcp: change txhash on SYN-data timeout
|
2019-01-10 16:55:41 -05:00 |
|
tcp_ulp.c
|
tcp, ulp: remove socket lock assertion on ULP cleanup
|
2018-10-16 12:38:41 -07:00 |
|
tcp_vegas.c
|
|
|
|
tcp_vegas.h
|
|
|
|
tcp_veno.c
|
|
|
|
tcp_westwood.c
|
|
|
|
tcp_yeah.c
|
|
|
|
tunnel4.c
|
net: Convert protocol error handlers from void to int
|
2018-11-08 17:13:08 -08:00 |
|
udp.c
|
udp: fix possible user after free in error handler
|
2019-02-22 16:05:11 -08:00 |
|
udp_diag.c
|
net: diag: document swapped src/dst in udp_dump_one.
|
2018-10-28 19:27:21 -07:00 |
|
udp_impl.h
|
udp: add missing rehash callback to udplite
|
2019-01-17 15:01:08 -08:00 |
|
udp_offload.c
|
udp: use indirect call wrappers for GRO socket lookup
|
2018-12-15 13:23:02 -08:00 |
|
udp_tunnel.c
|
udp_tunnel: add config option to bind to a device
|
2018-12-03 14:15:26 -08:00 |
|
udplite.c
|
udp: add missing rehash callback to udplite
|
2019-01-17 15:01:08 -08:00 |
|
xfrm4_input.c
|
xfrm: reset transport header back to network header after all input transforms ahave been applied
|
2018-09-04 10:26:30 +02:00 |
|
xfrm4_mode_beet.c
|
|
|
|
xfrm4_mode_transport.c
|
xfrm: reset transport header back to network header after all input transforms ahave been applied
|
2018-09-04 10:26:30 +02:00 |
|
xfrm4_mode_tunnel.c
|
|
|
|
xfrm4_output.c
|
|
|
|
xfrm4_policy.c
|
|
|
|
xfrm4_protocol.c
|
net: Convert protocol error handlers from void to int
|
2018-11-08 17:13:08 -08:00 |
|
xfrm4_state.c
|
|
|
|
xfrm4_tunnel.c
|
|
|