bisecting cause commit starting from d2f0c961148f65bc73eda72b9fa3a4e80973cb49 building syzkaller on 7516d9fa9301d2dfa5beaf49d93563f8048694aa testing commit d2f0c961148f65bc73eda72b9fa3a4e80973cb49 with gcc (GCC) 8.1.0 run #0: crashed: KASAN: slab-out-of-bounds Read in skb_gro_receive run #1: crashed: KASAN: slab-out-of-bounds Read in skb_gro_receive run #2: crashed: KASAN: slab-out-of-bounds Write in skb_gro_receive run #3: crashed: KASAN: slab-out-of-bounds Read in skb_gro_receive run #4: crashed: KASAN: slab-out-of-bounds Read in skb_gro_receive run #5: crashed: KASAN: slab-out-of-bounds Read in skb_gro_receive run #6: crashed: KASAN: slab-out-of-bounds Read in skb_gro_receive testing release v5.0 testing commit 1c163f4c7b3f621efff9b28a47abb36f7378d783 with gcc (GCC) 8.1.0 run #0: crashed: KASAN: slab-out-of-bounds Read in skb_gro_receive run #1: crashed: KASAN: slab-out-of-bounds Read in skb_gro_receive run #2: crashed: KASAN: slab-out-of-bounds Read in skb_gro_receive run #3: crashed: KASAN: slab-out-of-bounds Read in skb_gro_receive run #4: crashed: KASAN: use-after-free Read in skb_gro_receive run #5: crashed: KASAN: slab-out-of-bounds Read in skb_gro_receive run #6: crashed: KASAN: slab-out-of-bounds Write in skb_gro_receive testing release v4.20 testing commit 8fe28cb58bcb235034b64cbbb7550a8a43fd88be with gcc (GCC) 8.1.0 all runs: OK # git bisect start v5.0 v4.20 Bisecting: 7011 revisions left to test after this (roughly 13 steps) [af7ddd8a627c62a835524b3f5b471edbbbcce025] Merge tag 'dma-mapping-4.21' of git://git.infradead.org/users/hch/dma-mapping testing commit af7ddd8a627c62a835524b3f5b471edbbbcce025 with gcc (GCC) 8.1.0 all runs: crashed: KASAN: slab-out-of-bounds Read in skb_gro_receive # git bisect bad af7ddd8a627c62a835524b3f5b471edbbbcce025 Bisecting: 3448 revisions left to test after this (roughly 12 steps) [792bf4d871dea8b69be2aaabdd320d7c6ed15985] Merge branch 'core-rcu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip testing commit 792bf4d871dea8b69be2aaabdd320d7c6ed15985 with gcc (GCC) 8.1.0 all runs: OK # git bisect good 792bf4d871dea8b69be2aaabdd320d7c6ed15985 Bisecting: 1729 revisions left to test after this (roughly 11 steps) [aa9d6e0f33aea8a1879e7e53fe0e436943f9ce0c] linux/netlink.h: drop unnecessary extern prefix testing commit aa9d6e0f33aea8a1879e7e53fe0e436943f9ce0c with gcc (GCC) 8.1.0 run #0: crashed: KASAN: slab-out-of-bounds Read in skb_gro_receive run #1: crashed: KASAN: use-after-free Read in skb_gro_receive run #2: crashed: KASAN: use-after-free Read in skb_gro_receive run #3: crashed: KASAN: slab-out-of-bounds Read in skb_gro_receive run #4: crashed: KASAN: slab-out-of-bounds Read in skb_gro_receive run #5: crashed: KASAN: slab-out-of-bounds Write in skb_gro_receive run #6: crashed: KASAN: slab-out-of-bounds Read in skb_gro_receive # git bisect bad aa9d6e0f33aea8a1879e7e53fe0e436943f9ce0c Bisecting: 858 revisions left to test after this (roughly 10 steps) [2a95471c3397734ba6869ca3fa084490fb35b40b] Merge branch 'prog_test_run-improvement' testing commit 2a95471c3397734ba6869ca3fa084490fb35b40b with gcc (GCC) 8.1.0 run #0: crashed: KASAN: slab-out-of-bounds Read in skb_gro_receive run #1: crashed: KASAN: slab-out-of-bounds Read in skb_gro_receive run #2: crashed: KASAN: slab-out-of-bounds Read in skb_gro_receive run #3: crashed: KASAN: slab-out-of-bounds Write in skb_gro_receive run #4: crashed: KASAN: slab-out-of-bounds Read in skb_gro_receive run #5: crashed: KASAN: slab-out-of-bounds Read in skb_gro_receive run #6: crashed: KASAN: slab-out-of-bounds Write in skb_gro_receive # git bisect bad 2a95471c3397734ba6869ca3fa084490fb35b40b Bisecting: 429 revisions left to test after this (roughly 9 steps) [480ba9c18a27ff77b02a2012e50dfd3e20ee9f7a] sctp: add sockopt SCTP_EVENT testing commit 480ba9c18a27ff77b02a2012e50dfd3e20ee9f7a with gcc (GCC) 8.1.0 run #0: crashed: KASAN: use-after-free Read in skb_gro_receive run #1: crashed: KASAN: slab-out-of-bounds Read in skb_gro_receive run #2: crashed: KASAN: slab-out-of-bounds Write in skb_gro_receive run #3: crashed: KASAN: slab-out-of-bounds Write in skb_gro_receive run #4: crashed: KASAN: slab-out-of-bounds Read in skb_gro_receive run #5: crashed: KASAN: use-after-free Read in skb_gro_receive run #6: crashed: KASAN: slab-out-of-bounds Read in skb_gro_receive # git bisect bad 480ba9c18a27ff77b02a2012e50dfd3e20ee9f7a Bisecting: 214 revisions left to test after this (roughly 8 steps) [d1ce01144e75c82bc3c036863f57ac3029354429] Merge branch 'PHYID-matching-macros' testing commit d1ce01144e75c82bc3c036863f57ac3029354429 with gcc (GCC) 8.1.0 run #0: crashed: KASAN: slab-out-of-bounds Write in skb_gro_receive run #1: crashed: KASAN: slab-out-of-bounds Read in skb_gro_receive run #2: crashed: KASAN: slab-out-of-bounds Read in skb_gro_receive run #3: crashed: KASAN: slab-out-of-bounds Read in skb_gro_receive run #4: crashed: KASAN: use-after-free Read in skb_gro_receive run #5: crashed: KASAN: slab-out-of-bounds Write in skb_gro_receive run #6: crashed: KASAN: slab-out-of-bounds Write in skb_gro_receive # git bisect bad d1ce01144e75c82bc3c036863f57ac3029354429 Bisecting: 107 revisions left to test after this (roughly 7 steps) [1c51dc9ad68acf4d2cb89ba847fb48fd6e2de723] net/ipv6: compute anycast address hash only if dev is null testing commit 1c51dc9ad68acf4d2cb89ba847fb48fd6e2de723 with gcc (GCC) 8.1.0 run #0: crashed: KASAN: slab-out-of-bounds Read in skb_gro_receive run #1: crashed: KASAN: slab-out-of-bounds Read in skb_gro_receive run #2: crashed: KASAN: slab-out-of-bounds Read in skb_gro_receive run #3: crashed: KASAN: slab-out-of-bounds Read in skb_gro_receive run #4: crashed: KASAN: slab-out-of-bounds Read in skb_gro_receive run #5: crashed: KASAN: stack-out-of-bounds Write in skb_gro_receive run #6: crashed: KASAN: slab-out-of-bounds Read in skb_gro_receive # git bisect bad 1c51dc9ad68acf4d2cb89ba847fb48fd6e2de723 Bisecting: 53 revisions left to test after this (roughly 6 steps) [68cb7d531e6a87250a51b8a4ee1c79b3445aeff3] ip: factor out protocol delivery helper testing commit 68cb7d531e6a87250a51b8a4ee1c79b3445aeff3 with gcc (GCC) 8.1.0 run #0: crashed: KASAN: slab-out-of-bounds Read in skb_gro_receive run #1: crashed: KASAN: slab-out-of-bounds Write in skb_gro_receive run #2: crashed: KASAN: slab-out-of-bounds Read in skb_gro_receive run #3: crashed: KASAN: use-after-free Write in skb_gro_receive run #4: crashed: KASAN: slab-out-of-bounds Read in skb_gro_receive run #5: crashed: KASAN: slab-out-of-bounds Read in skb_gro_receive run #6: crashed: KASAN: slab-out-of-bounds Read in skb_gro_receive # git bisect bad 68cb7d531e6a87250a51b8a4ee1c79b3445aeff3 Bisecting: 26 revisions left to test after this (roughly 5 steps) [35d93a30040c3884d8752c35a3fc1200d8f96b1b] net: hns3: adjust the process of PF reset testing commit 35d93a30040c3884d8752c35a3fc1200d8f96b1b with gcc (GCC) 8.1.0 run #0: OK run #1: OK run #2: OK run #3: OK run #4: OK run #5: OK run #6: boot failed: WARNING: workqueue cpumask: online intersect > possible intersect # git bisect good 35d93a30040c3884d8752c35a3fc1200d8f96b1b Bisecting: 13 revisions left to test after this (roughly 4 steps) [f601a85bd7883708f48911d8c88e69fe5bde2b4d] net: hns3: Remove set but not used variable 'reset_level' testing commit f601a85bd7883708f48911d8c88e69fe5bde2b4d with gcc (GCC) 8.1.0 all runs: OK # git bisect good f601a85bd7883708f48911d8c88e69fe5bde2b4d Bisecting: 6 revisions left to test after this (roughly 3 steps) [d839a0ebeb4e81a4f2923f581c28b41e1238bdfe] ipv6: allow ping to link-local address in VRF testing commit d839a0ebeb4e81a4f2923f581c28b41e1238bdfe with gcc (GCC) 8.1.0 all runs: OK # git bisect good d839a0ebeb4e81a4f2923f581c28b41e1238bdfe Bisecting: 3 revisions left to test after this (roughly 2 steps) [7e225619e8afc432fb054ef135f10c11cf8cfc85] Merge branch 'vrf-allow-simultaneous-service-instances-in-default-and-other-VRFs' testing commit 7e225619e8afc432fb054ef135f10c11cf8cfc85 with gcc (GCC) 8.1.0 all runs: OK # git bisect good 7e225619e8afc432fb054ef135f10c11cf8cfc85 Bisecting: 1 revision left to test after this (roughly 1 step) [e20cf8d3f1f763ad28a9cb3b41305b8a8a42653e] udp: implement GRO for plain UDP sockets. testing commit e20cf8d3f1f763ad28a9cb3b41305b8a8a42653e with gcc (GCC) 8.1.0 run #0: crashed: KASAN: slab-out-of-bounds Write in skb_gro_receive run #1: crashed: KASAN: slab-out-of-bounds Read in skb_gro_receive run #2: crashed: KASAN: slab-out-of-bounds Read in skb_gro_receive run #3: crashed: KASAN: slab-out-of-bounds Read in skb_gro_receive run #4: crashed: KASAN: slab-out-of-bounds Read in skb_gro_receive run #5: crashed: KASAN: slab-out-of-bounds Read in skb_gro_receive run #6: crashed: KASAN: slab-out-of-bounds Read in skb_gro_receive # git bisect bad e20cf8d3f1f763ad28a9cb3b41305b8a8a42653e Bisecting: 0 revisions left to test after this (roughly 0 steps) [60fb9567bf30937e6bedfa939d7c8fd4ee6a1b1c] udp: implement complete book-keeping for encap_needed testing commit 60fb9567bf30937e6bedfa939d7c8fd4ee6a1b1c with gcc (GCC) 8.1.0 all runs: OK # git bisect good 60fb9567bf30937e6bedfa939d7c8fd4ee6a1b1c e20cf8d3f1f763ad28a9cb3b41305b8a8a42653e is the first bad commit commit e20cf8d3f1f763ad28a9cb3b41305b8a8a42653e Author: Paolo Abeni Date: Wed Nov 7 12:38:29 2018 +0100 udp: implement GRO for plain UDP sockets. This is the RX counterpart of commit bec1f6f69736 ("udp: generate gso with UDP_SEGMENT"). When UDP_GRO is enabled, such socket is also eligible for GRO in the rx path: UDP segments directed to such socket are assembled into a larger GSO_UDP_L4 packet. The core UDP GRO support is enabled with setsockopt(UDP_GRO). Initial benchmark numbers: Before: udp rx: 1079 MB/s 769065 calls/s After: udp rx: 1466 MB/s 24877 calls/s This change introduces a side effect in respect to UDP tunnels: after a UDP tunnel creation, now the kernel performs a lookup per ingress UDP packet, while before such lookup happened only if the ingress packet carried a valid internal header csum. rfc v2 -> rfc v3: - fixed typos in macro name and comments - really enforce UDP_GRO_CNT_MAX, instead of UDP_GRO_CNT_MAX + 1 - acquire socket lock in UDP_GRO setsockopt rfc v1 -> rfc v2: - use a new option to enable UDP GRO - use static keys to protect the UDP GRO socket lookup Signed-off-by: Paolo Abeni Signed-off-by: David S. Miller :040000 040000 dbe49c4f1c0afd403192a2970b7e66bb9c145a40 7e13ae2d11f37fe1b2f12743ea4a482d1a9a1858 M include :040000 040000 e453635f4aebd0ab95276f8d6e6452d0a7fbdd23 300bde2c973c1b23e02744d142f1cbfbe4c9c973 M net revisions tested: 17, total time: 3h56m26.162864077s (build: 1h36m32.702007173s, test: 2h13m46.287629408s) first bad commit: e20cf8d3f1f763ad28a9cb3b41305b8a8a42653e udp: implement GRO for plain UDP sockets. cc: ["davem@davemloft.net" "dhowells@redhat.com" "kuznet@ms2.inr.ac.ru" "linux-kernel@vger.kernel.org" "netdev@vger.kernel.org" "pabeni@redhat.com" "yoshfuji@linux-ipv6.org"] crash: KASAN: slab-out-of-bounds Read in skb_gro_receive nf_conntrack: default automatic helper assignment has been turned off for security reasons and CT-based firewall rule not found. Use the iptables CT target to attach helpers instead. IPv6: ADDRCONF(NETDEV_CHANGE): hsr_slave_0: link becomes ready IPv6: ADDRCONF(NETDEV_UP): hsr0: link is not ready IPv6: ADDRCONF(NETDEV_CHANGE): hsr0: link becomes ready ================================================================== BUG: KASAN: slab-out-of-bounds in skb_gro_receive+0x1092/0x14f0 net/core/skbuff.c:3795 IPv6: ADDRCONF(NETDEV_UP): vxcan1: link is not ready Read of size 16 at addr ffff8800946efff0 by task syz-executor.3/7171 8021q: adding VLAN 0 to HW filter on device batadv0 CPU: 1 PID: 7171 Comm: syz-executor.3 Not tainted 4.20.0-rc1+ #1 Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011 Call Trace: __dump_stack lib/dump_stack.c:77 [inline] dump_stack+0x16b/0x224 lib/dump_stack.c:113 print_address_description.cold.7+0x9/0x1ff mm/kasan/report.c:256 kasan_report_error mm/kasan/report.c:354 [inline] kasan_report.cold.8+0x242/0x309 mm/kasan/report.c:412 __asan_report_load16_noabort+0x14/0x20 mm/kasan/report.c:434 skb_gro_receive+0x1092/0x14f0 net/core/skbuff.c:3795 udp_gro_receive_segment net/ipv4/udp_offload.c:381 [inline] call_gro_receive include/linux/netdevice.h:2334 [inline] udp_gro_receive+0x8e0/0xf60 net/ipv4/udp_offload.c:410 udp4_gro_receive+0x505/0xf00 net/ipv4/udp_offload.c:474 call_gro_receive include/linux/netdevice.h:2334 [inline] inet_gro_receive+0xb68/0x10d0 net/ipv4/af_inet.c:1497 dev_gro_receive+0xbe9/0x22a0 net/core/dev.c:5513 napi_gro_frags+0x305/0x950 net/core/dev.c:5763 tun_get_user+0x21b0/0x32c0 drivers/net/tun.c:1948 tun_chr_write_iter+0xaf/0x150 drivers/net/tun.c:1993 call_write_iter include/linux/fs.h:1857 [inline] do_iter_readv_writev+0x4b8/0x960 fs/read_write.c:680 do_iter_write+0x128/0x540 fs/read_write.c:959 vfs_writev+0x16f/0x2d0 fs/read_write.c:1004 do_writev+0xda/0x260 fs/read_write.c:1039 __do_sys_writev fs/read_write.c:1112 [inline] __se_sys_writev fs/read_write.c:1109 [inline] __x64_sys_writev+0x70/0xb0 fs/read_write.c:1109 do_syscall_64+0xd6/0x4e0 arch/x86/entry/common.c:290 entry_SYSCALL_64_after_hwframe+0x49/0xbe RIP: 0033:0x458c61 Code: 75 14 b8 14 00 00 00 0f 05 48 3d 01 f0 ff ff 0f 83 e4 b9 fb ff c3 48 83 ec 08 e8 1a 2d 00 00 48 89 04 24 b8 14 00 00 00 0f 05 <48> 8b 3c 24 48 89 c2 e8 63 2d 00 00 48 89 d0 48 83 c4 08 48 3d 01 RSP: 002b:00007f2879c08ba0 EFLAGS: 00000293 ORIG_RAX: 0000000000000014 RAX: ffffffffffffffda RBX: 000000000000002a RCX: 0000000000458c61 RDX: 0000000000000001 RSI: 00007f2879c08c00 RDI: 00000000000000f0 RBP: 000000000073bf00 R08: 0000000000000000 R09: 0000000000000000 R10: 0000000000000000 R11: 0000000000000293 R12: 00007f2879c096d4 R13: 00000000004c76b6 R14: 00000000004dd610 R15: 00000000ffffffff Allocated by task 7124: save_stack+0x43/0xd0 mm/kasan/kasan.c:448 set_track mm/kasan/kasan.c:460 [inline] kasan_kmalloc+0xc7/0xe0 mm/kasan/kasan.c:553 kasan_slab_alloc+0x12/0x20 mm/kasan/kasan.c:490 kmem_cache_alloc+0x12e/0x730 mm/slab.c:3554 getname_flags+0xb8/0x510 fs/namei.c:140 getname+0xd/0x10 fs/namei.c:211 do_sys_open+0x14c/0x350 fs/open.c:1057 __do_sys_open fs/open.c:1081 [inline] __se_sys_open fs/open.c:1076 [inline] __x64_sys_open+0x79/0xb0 fs/open.c:1076 do_syscall_64+0xd6/0x4e0 arch/x86/entry/common.c:290 entry_SYSCALL_64_after_hwframe+0x49/0xbe Freed by task 7124: save_stack+0x43/0xd0 mm/kasan/kasan.c:448 set_track mm/kasan/kasan.c:460 [inline] __kasan_slab_free+0x102/0x150 mm/kasan/kasan.c:521 kasan_slab_free+0xe/0x10 mm/kasan/kasan.c:528 __cache_free mm/slab.c:3498 [inline] kmem_cache_free+0x83/0x290 mm/slab.c:3760 putname+0xa8/0xe0 fs/namei.c:261 do_sys_open+0x16e/0x350 fs/open.c:1072 __do_sys_open fs/open.c:1081 [inline] __se_sys_open fs/open.c:1076 [inline] __x64_sys_open+0x79/0xb0 fs/open.c:1076 do_syscall_64+0xd6/0x4e0 arch/x86/entry/common.c:290 entry_SYSCALL_64_after_hwframe+0x49/0xbe The buggy address belongs to the object at ffff8800946ee000 which belongs to the cache names_cache of size 4096 The buggy address is located 4080 bytes to the right of 4096-byte region [ffff8800946ee000, ffff8800946ef000) The buggy address belongs to the page: page:ffffea000251bb80 count:1 mapcount:0 mapping:ffff8800aa42ac40 index:0x0 compound_mapcount: 0 flags: 0x1fffc0000010200(slab|head) raw: 01fffc0000010200 ffffea00026f9488 ffffea00021c0888 ffff8800aa42ac40 raw: 0000000000000000 ffff8800946ee000 0000000100000001 0000000000000000 page dumped because: kasan: bad access detected Memory state around the buggy address: ffff8800946efe80: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc ffff8800946eff00: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc >ffff8800946eff80: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc ^ ffff8800946f0000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ffff8800946f0080: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ==================================================================