bisecting fixing commit since b850307b279cbd12ab8c654d1a3dfe55319cc475 building syzkaller on eabcced43245881efa7769d938bcaf795ed48742 testing commit b850307b279cbd12ab8c654d1a3dfe55319cc475 with gcc (GCC) 8.4.1 20210217 kernel signature: cde07a798320a1f6ec62b99cf757cb46b7ccf881139bdb784c6392c1c5a344f4 run #0: crashed: KASAN: use-after-free Read in __ext4_check_dir_entry run #1: crashed: KASAN: slab-out-of-bounds Read in __ext4_check_dir_entry run #2: crashed: KASAN: slab-out-of-bounds Read in __ext4_check_dir_entry run #3: crashed: KASAN: use-after-free Read in __ext4_check_dir_entry run #4: crashed: KASAN: slab-out-of-bounds Read in __ext4_check_dir_entry run #5: crashed: KASAN: slab-out-of-bounds Read in __ext4_check_dir_entry run #6: crashed: KASAN: use-after-free Read in __ext4_check_dir_entry run #7: crashed: KASAN: slab-out-of-bounds Read in __ext4_check_dir_entry run #8: crashed: KASAN: slab-out-of-bounds Read in __ext4_check_dir_entry run #9: crashed: KASAN: slab-out-of-bounds Read in __ext4_check_dir_entry run #10: crashed: KASAN: slab-out-of-bounds Read in __ext4_check_dir_entry run #11: crashed: KASAN: use-after-free Read in __ext4_check_dir_entry run #12: crashed: KASAN: slab-out-of-bounds Read in __ext4_check_dir_entry run #13: crashed: KASAN: slab-out-of-bounds Read in __ext4_check_dir_entry run #14: crashed: KASAN: slab-out-of-bounds Read in __ext4_check_dir_entry run #15: crashed: KASAN: use-after-free Read in __ext4_check_dir_entry run #16: crashed: KASAN: slab-out-of-bounds Read in __ext4_check_dir_entry run #17: OK run #18: OK run #19: crashed: KASAN: use-after-free Read in __ext4_check_dir_entry testing current HEAD 670d6552eda8ff0c5f396d3d6f0174237917c66c testing commit 670d6552eda8ff0c5f396d3d6f0174237917c66c with gcc (GCC) 8.4.1 20210217 kernel signature: 00443300cf5e440366c26af2ca1621f68666c76b3e619475dbe24f82094b1022 run #0: crashed: KASAN: out-of-bounds Read in __ext4_check_dir_entry run #1: crashed: KASAN: slab-out-of-bounds Read in __ext4_check_dir_entry run #2: crashed: KASAN: slab-out-of-bounds Read in __ext4_check_dir_entry run #3: crashed: KASAN: slab-out-of-bounds Read in __ext4_check_dir_entry run #4: crashed: KASAN: use-after-free Read in __ext4_check_dir_entry run #5: crashed: KASAN: slab-out-of-bounds Read in __ext4_check_dir_entry run #6: crashed: KASAN: slab-out-of-bounds Read in __ext4_check_dir_entry run #7: crashed: KASAN: use-after-free Read in __ext4_check_dir_entry run #8: crashed: KASAN: use-after-free Read in __ext4_check_dir_entry run #9: OK revisions tested: 2, total time: 32m45.534091239s (build: 14m45.864635128s, test: 17m32.347350939s) the crash still happens on HEAD commit msg: Linux 4.14.227 crash: KASAN: use-after-free Read in __ext4_check_dir_entry batman_adv: batadv0: Interface activated: batadv_slave_1 device veth1_macvtap entered promiscuous mode IPv6: ADDRCONF(NETDEV_UP): macsec0: link is not ready IPv6: ADDRCONF(NETDEV_CHANGE): macvtap0: link becomes ready ================================================================== BUG: KASAN: use-after-free in __ext4_check_dir_entry+0x2c6/0x3f0 fs/ext4/dir.c:82 Read of size 1 at addr ffff8881daf95001 by task syz-executor.0/7066 CPU: 0 PID: 7066 Comm: syz-executor.0 Not tainted 4.14.227-syzkaller #0 Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011 Call Trace: __dump_stack lib/dump_stack.c:17 [inline] dump_stack+0x14b/0x1e7 lib/dump_stack.c:58 print_address_description.cold.6+0x9/0x1ca mm/kasan/report.c:252 kasan_report_error mm/kasan/report.c:351 [inline] kasan_report mm/kasan/report.c:409 [inline] kasan_report.cold.7+0x11a/0x2d3 mm/kasan/report.c:393 __asan_report_load1_noabort+0x14/0x20 mm/kasan/report.c:427 __ext4_check_dir_entry+0x2c6/0x3f0 fs/ext4/dir.c:82 ext4_readdir+0x72a/0x3010 fs/ext4/dir.c:240 iterate_dir+0x188/0x660 fs/readdir.c:52 SYSC_getdents fs/readdir.c:269 [inline] SyS_getdents+0x111/0x1d0 fs/readdir.c:250 do_syscall_64+0x1c7/0x5b0 arch/x86/entry/common.c:292 entry_SYSCALL_64_after_hwframe+0x46/0xbb RIP: 0033:0x464599 RSP: 002b:00007f542c24d198 EFLAGS: 00000246 ORIG_RAX: 000000000000004e RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 0000000000464599 RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000004 RBP: 00000000004f5b60 R08: 0000000000000000 R09: 0000000000000000 R10: 0000000000000000 R11: 0000000000000246 R12: 000000000055bf00 R13: 00007f542c24d6bc R14: 00000000ffffffff R15: 0000000000000003 The buggy address belongs to the page: page:ffffea00076be540 count:0 mapcount:0 mapping: (null) index:0x0 flags: 0x17ffe0000000000() raw: 017ffe0000000000 0000000000000000 0000000000000000 00000000ffffffff raw: ffff8881f672ee98 ffffea0007400c60 ffff8881db217aa8 0000000000000000 page dumped because: kasan: bad access detected Memory state around the buggy address: ffff8881daf94f00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ffff8881daf94f80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >ffff8881daf95000: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ^ ffff8881daf95080: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ffff8881daf95100: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ================================================================== EXT4-fs error (device sda1): ext4_readdir:242: inode #11: block 8230: comm syz-executor.0: path /lost+found: bad entry in directory: rec_len % 4 != 0 - offset=4091, inode=2223847902, rec_len=201, name_len=0, size=4096 EXT4-fs error (device sda1): ext4_readdir:242: inode #11: block 8230: comm syz-executor.0: path /lost+found: bad entry in directory: rec_len % 4 != 0 - offset=4091, inode=2223847902, rec_len=201, name_len=0, size=4096 IPv6: ADDRCONF(NETDEV_CHANGE): macsec0: link becomes ready EXT4-fs error (device sda1): ext4_readdir:242: inode #11: block 8230: comm syz-executor.0: path /lost+found: bad entry in directory: rec_len % 4 != 0 - offset=4091, inode=2223847902, rec_len=201, name_len=0, size=4096 EXT4-fs error (device sda1): ext4_readdir:242: inode #11: block 8230: comm syz-executor.0: path /lost+found: bad entry in directory: rec_len % 4 != 0 - offset=4091, inode=2223847902, rec_len=201, name_len=0, size=4096 IPv6: ADDRCONF(NETDEV_CHANGE): veth1_vlan: link becomes ready EXT4-fs error (device sda1): ext4_readdir:242: inode #11: block 8230: comm syz-executor.0: path /lost+found: bad entry in directory: rec_len % 4 != 0 - offset=4091, inode=2223847902, rec_len=201, name_len=0, size=4096 IPv6: ADDRCONF(NETDEV_CHANGE): veth0_vlan: link becomes ready EXT4-fs error (device sda1): ext4_readdir:242: inode #11: block 8230: comm syz-executor.0: path /lost+found: bad entry in directory: rec_len % 4 != 0 - offset=4091, inode=2223847902, rec_len=201, name_len=0, size=4096 IPv6: ADDRCONF(NETDEV_CHANGE): batadv_slave_1: link becomes ready EXT4-fs error (device sda1): ext4_readdir:242: inode #11: block 8230: comm syz-executor.0: path /lost+found: bad entry in directory: rec_len % 4 != 0 - offset=4091, inode=2223847902, rec_len=201, name_len=0, size=4096 IPv6: ADDRCONF(NETDEV_CHANGE): veth1_to_batadv: link becomes ready IPv6: ADDRCONF(NETDEV_UP): veth1_vlan: link is not ready device veth0_vlan entered promiscuous mode IPv6: ADDRCONF(NETDEV_CHANGE): vlan0: link becomes ready IPv6: ADDRCONF(NETDEV_CHANGE): vlan1: link becomes ready IPv6: ADDRCONF(NETDEV_CHANGE): veth1_vlan: link becomes ready IPv6: ADDRCONF(NETDEV_CHANGE): veth0_vlan: link becomes ready IPv6: ADDRCONF(NETDEV_CHANGE): vlan0: link becomes ready IPv6: ADDRCONF(NETDEV_CHANGE): vlan1: link becomes ready device veth0_vlan entered promiscuous mode IPv6: ADDRCONF(NETDEV_UP): veth0_to_batadv: link is not ready device veth1_vlan entered promiscuous mode device veth1_vlan entered promiscuous mode IPv6: ADDRCONF(NETDEV_UP): veth1_to_batadv: link is not ready IPv6: ADDRCONF(NETDEV_UP): veth0_macvtap: link is not ready batman_adv: The newly added mac address (aa:aa:aa:aa:aa:3d) already exists on: batadv_slave_0 batman_adv: It is strongly recommended to keep mac addresses unique to avoid problems! batman_adv: The newly added mac address (aa:aa:aa:aa:aa:3d) already exists on: batadv_slave_0 batman_adv: It is strongly recommended to keep mac addresses unique to avoid problems! batman_adv: The newly added mac address (aa:aa:aa:aa:aa:3d) already exists on: batadv_slave_0 batman_adv: It is strongly recommended to keep mac addresses unique to avoid problems! IPv6: ADDRCONF(NETDEV_UP): batadv_slave_0: link is not ready batman_adv: batadv0: Interface activated: batadv_slave_0 IPv6: ADDRCONF(NETDEV_UP): veth1_macvtap: link is not ready IPv6: ADDRCONF(NETDEV_CHANGE): batadv_slave_0: link becomes ready IPv6: ADDRCONF(NETDEV_CHANGE): veth0_to_batadv: link becomes ready IPv6: ADDRCONF(NETDEV_CHANGE): veth1_macvtap: link becomes ready IPv6: ADDRCONF(NETDEV_CHANGE): veth0_macvtap: link becomes ready batman_adv: The newly added mac address (aa:aa:aa:aa:aa:3e) already exists on: batadv_slave_1 batman_adv: It is strongly recommended to keep mac addresses unique to avoid problems! batman_adv: The newly added mac address (aa:aa:aa:aa:aa:3e) already exists on: batadv_slave_1 batman_adv: It is strongly recommended to keep mac addresses unique to avoid problems! batman_adv: The newly added mac address (aa:aa:aa:aa:aa:3e) already exists on: batadv_slave_1 batman_adv: It is strongly recommended to keep mac addresses unique to avoid problems! IPv6: ADDRCONF(NETDEV_UP): batadv_slave_1: link is not ready batman_adv: batadv0: Interface activated: batadv_slave_1 IPv6: ADDRCONF(NETDEV_CHANGE): batadv_slave_1: link becomes ready IPv6: ADDRCONF(NETDEV_CHANGE): veth1_to_batadv: link becomes ready device veth0_macvtap entered promiscuous mode EXT4-fs error (device sda1): ext4_readdir:242: inode #11: block 8230: comm syz-executor.1: path /lost+found: bad entry in directory: rec_len % 4 != 0 - offset=4091, inode=2223847902, rec_len=201, name_len=0, size=4096 IPv6: ADDRCONF(NETDEV_UP): macvtap0: link is not ready device veth1_macvtap entered promiscuous mode IPv6: ADDRCONF(NETDEV_UP): macsec0: link is not ready IPv6: ADDRCONF(NETDEV_UP): veth0_macvtap: link is not ready EXT4-fs error (device sda1): ext4_readdir:242: inode #11: block 8230: comm syz-executor.1: path /lost+found: bad entry in directory: rec_len % 4 != 0 - offset=4091, inode=2223847902, rec_len=201, name_len=0, size=4096 IPv6: ADDRCONF(NETDEV_UP): veth1_macvtap: link is not ready IPv6: ADDRCONF(NETDEV_UP): veth0_to_batadv: link is not ready IPv6: ADDRCONF(NETDEV_CHANGE): macvtap0: link becomes ready IPv6: ADDRCONF(NETDEV_CHANGE): macsec0: link becomes ready IPv6: ADDRCONF(NETDEV_CHANGE): veth1_macvtap: link becomes ready IPv6: ADDRCONF(NETDEV_CHANGE): veth0_macvtap: link becomes ready device veth0_macvtap entered promiscuous mode IPv6: ADDRCONF(NETDEV_UP): macvtap0: link is not ready IPv6: ADDRCONF(NETDEV_UP): veth1_to_batadv: link is not ready batman_adv: The newly added mac address (aa:aa:aa:aa:aa:3d) already exists on: batadv_slave_0 batman_adv: It is strongly recommended to keep mac addresses unique to avoid problems! batman_adv: The newly added mac address (aa:aa:aa:aa:aa:3d) already exists on: batadv_slave_0 batman_adv: It is strongly recommended to keep mac addresses unique to avoid problems! batman_adv: The newly added mac address (aa:aa:aa:aa:aa:3d) already exists on: batadv_slave_0 batman_adv: It is strongly recommended to keep mac addresses unique to avoid problems! batman_adv: The newly added mac address (aa:aa:aa:aa:aa:3d) already exists on: batadv_slave_0 batman_adv: It is strongly recommended to keep mac addresses unique to avoid problems! IPv6: ADDRCONF(NETDEV_UP): batadv_slave_0: link is not ready batman_adv: batadv0: Interface activated: batadv_slave_0 device veth1_macvtap entered promiscuous mode IPv6: ADDRCONF(NETDEV_UP): macsec0: link is not ready IPv6: ADDRCONF(NETDEV_CHANGE): macvtap0: link becomes ready IPv6: ADDRCONF(NETDEV_CHANGE): macsec0: link becomes ready IPv6: ADDRCONF(NETDEV_CHANGE): batadv_slave_0: link becomes ready IPv6: ADDRCONF(NETDEV_CHANGE): veth0_to_batadv: link becomes ready batman_adv: The newly added mac address (aa:aa:aa:aa:aa:3e) already exists on: batadv_slave_1 batman_adv: It is strongly recommended to keep mac addresses unique to avoid problems! batman_adv: The newly added mac address (aa:aa:aa:aa:aa:3e) already exists on: batadv_slave_1 batman_adv: It is strongly recommended to keep mac addresses unique to avoid problems! batman_adv: The newly added mac address (aa:aa:aa:aa:aa:3e) already exists on: batadv_slave_1 batman_adv: It is strongly recommended to keep mac addresses unique to avoid problems! batman_adv: The newly added mac address (aa:aa:aa:aa:aa:3e) already exists on: batadv_slave_1 batman_adv: It is strongly recommended to keep mac addresses unique to avoid problems! IPv6: ADDRCONF(NETDEV_UP): batadv_slave_1: link is not ready batman_adv: batadv0: Interface activated: batadv_slave_1 IPv6: ADDRCONF(NETDEV_UP): veth0_to_batadv: link is not ready IPv6: ADDRCONF(NETDEV_CHANGE): batadv_slave_1: link becomes ready EXT4-fs error (device sda1): ext4_readdir:242: inode #11: block 8230: comm syz-executor.3: path /lost+found: bad entry in directory: rec_len % 4 != 0 - offset=4091, inode=2223847902, rec_len=201, name_len=0, size=4096 IPv6: ADDRCONF(NETDEV_CHANGE): veth1_to_batadv: link becomes ready IPv6: ADDRCONF(NETDEV_UP): veth1_to_batadv: link is not ready batman_adv: The newly added mac address (aa:aa:aa:aa:aa:3d) already exists on: batadv_slave_0 batman_adv: It is strongly recommended to keep mac addresses unique to avoid problems! batman_adv: The newly added mac address (aa:aa:aa:aa:aa:3d) already exists on: batadv_slave_0 batman_adv: It is strongly recommended to keep mac addresses unique to avoid problems! batman_adv: The newly added mac address (aa:aa:aa:aa:aa:3d) already exists on: batadv_slave_0 batman_adv: It is strongly recommended to keep mac addresses unique to avoid problems! batman_adv: The newly added mac address (aa:aa:aa:aa:aa:3d) already exists on: batadv_slave_0 batman_adv: It is strongly recommended to keep mac addresses unique to avoid problems! batman_adv: The newly added mac address (aa:aa:aa:aa:aa:3d) already exists on: batadv_slave_0 batman_adv: It is strongly recommended to keep mac addresses unique to avoid problems! IPv6: ADDRCONF(NETDEV_UP): batadv_slave_0: link is not ready batman_adv: batadv0: Interface activated: batadv_slave_0 IPv6: ADDRCONF(NETDEV_CHANGE): batadv_slave_0: link becomes ready IPv6: ADDRCONF(NETDEV_CHANGE): veth0_to_batadv: link becomes ready batman_adv: The newly added mac address (aa:aa:aa:aa:aa:3e) already exists on: batadv_slave_1 batman_adv: It is strongly recommended to keep mac addresses unique to avoid problems! batman_adv: The newly added mac address (aa:aa:aa:aa:aa:3e) already exists on: batadv_slave_1 batman_adv: It is strongly recommended to keep mac addresses unique to avoid problems! batman_adv: The newly added mac address (aa:aa:aa:aa:aa:3e) already exists on: batadv_slave_1 batman_adv: It is strongly recommended to keep mac addresses unique to avoid problems! batman_adv: The newly added mac address (aa:aa:aa:aa:aa:3e) already exists on: batadv_slave_1 batman_adv: It is strongly recommended to keep mac addresses unique to avoid problems! batman_adv: The newly added mac address (aa:aa:aa:aa:aa:3e) already exists on: batadv_slave_1 batman_adv: It is strongly recommended to keep mac addresses unique to avoid problems! IPv6: ADDRCONF(NETDEV_UP): batadv_slave_1: link is not ready batman_adv: batadv0: Interface activated: batadv_slave_1 IPv6: ADDRCONF(NETDEV_CHANGE): batadv_slave_1: link becomes ready IPv6: ADDRCONF(NETDEV_CHANGE): veth1_to_batadv: link becomes ready EXT4-fs error: 332 callbacks suppressed EXT4-fs error (device sda1): ext4_readdir:242: inode #11: block 8230: comm syz-executor.4: path /lost+found: bad entry in directory: rec_len % 4 != 0 - offset=4091, inode=2223847902, rec_len=201, name_len=0, size=4096 EXT4-fs error (device sda1): ext4_readdir:242: inode #11: block 8230: comm syz-executor.3: path /lost+found: bad entry in directory: rec_len % 4 != 0 - offset=4091, inode=2223847902, rec_len=201, name_len=0, size=4096 EXT4-fs error (device sda1): ext4_readdir:242: inode #11: block 8230: comm syz-executor.0: path /lost+found: bad entry in directory: rec_len % 4 != 0 - offset=4091, inode=2223847902, rec_len=201, name_len=0, size=4096 EXT4-fs error (device sda1): ext4_readdir:242: inode #11: block 8230: comm syz-executor.1: path /lost+found: bad entry in directory: rec_len % 4 != 0 - offset=4091, inode=2223847902, rec_len=201, name_len=0, size=4096 EXT4-fs error (device sda1): ext4_readdir:242: inode #11: block 8230: comm syz-executor.2: path /lost+found: bad entry in directory: rec_len % 4 != 0 - offset=4091, inode=2223847902, rec_len=201, name_len=0, size=4096 EXT4-fs error (device sda1): ext4_readdir:242: inode #11: block 8230: comm syz-executor.5: path /lost+found: bad entry in directory: rec_len % 4 != 0 - offset=4091, inode=2223847902, rec_len=201, name_len=0, size=4096 EXT4-fs error (device sda1): ext4_readdir:242: inode #11: block 8230: comm syz-executor.3: path /lost+found: bad entry in directory: rec_len % 4 != 0 - offset=4091, inode=2223847902, rec_len=201, name_len=0, size=4096 EXT4-fs error (device sda1): ext4_readdir:242: inode #11: block 8230: comm syz-executor.4: path /lost+found: bad entry in directory: rec_len % 4 != 0 - offset=4091, inode=2223847902, rec_len=201, name_len=0, size=4096 EXT4-fs error (device sda1): ext4_readdir:242: inode #11: block 8230: comm syz-executor.2: path /lost+found: bad entry in directory: rec_len % 4 != 0 - offset=4091, inode=2223847902, rec_len=201, name_len=0, size=4096 EXT4-fs error (device sda1): ext4_readdir:242: inode #11: block 8230: comm syz-executor.0: path /lost+found: bad entry in directory: rec_len % 4 != 0 - offset=4091, inode=2223847902, rec_len=201, name_len=0, size=4096