KASAN: use-after-free Read in ext4_htree_fill_tree

Status: upstream: reported C repro on 2024/12/22 19:07
Bug presence: origin:upstream
Labels: missing-backport
[Documentation on labels]
Reported-by: syzbot+e1370dc6128e4079c651@syzkaller.appspotmail.com
First crash: 672d, last: 6d16h
Fix bisection: failed (error log, bisect log)
  
▶ ▼ Bug presence (2)
Date Name Commit Repro Result
2025/07/16 lts (merge base) 58485ff1a74f syz [report] KASAN: slab-out-of-bounds Read in dx_insert_block
2025/07/16 upstream (ToT) 155a3c003e55 syz [report] KASAN: use-after-free Read in dx_insert_block
▶ ▼ Similar bugs (3)
Kernel Title Rank 🛈 Repro Cause bisect Fix bisect Count Last Reported Patched Status
linux-6.1 KASAN: use-after-free Read in ext4_htree_fill_tree 19 1 773d 773d 0/3 auto-obsoleted due to no activity on 2024/12/22 07:44
android-5-10 KASAN: slab-out-of-bounds Read in ext4_htree_fill_tree 19 syz, C 18 2d05h 826d 0/2 upstream: reported C repro on 2024/07/21 20:19
android-5-15 KASAN: use-after-free Read in ext4_htree_fill_tree origin:upstream missing-backport 19 syz, C error 9 46d 667d 0/2 upstream: reported C repro on 2024/12/27 19:48
▶ ▼ Last patch testing requests (6)
Created Duration User Patch Repo Result
2026/10/19 19:05 10m retest repro android14-6.1 report job log log
2026/10/19 19:05 12m retest repro android14-6.1 report job log log
2026/10/19 19:05 11m retest repro android14-6.1 report job log log
2026/08/26 20:06 2m retest repro android14-6.1 error job log
2026/08/26 20:06 2m retest repro android14-6.1 error job log
2026/08/26 20:06 3m retest repro android14-6.1 error job log

Sample crash report:
BUG: KASAN: use-after-free in ext4_htree_fill_tree+0x1080/0x10e0 fs/ext4/namei.c:1246
Read of size 1 at addr ffff888121a78f7a by task syz-executor/390

CPU: 1 PID: 390 Comm: syz-executor Not tainted syzkaller #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 09/16/2026
Call Trace:
 <TASK>
 __dump_stack+0x21/0x24 lib/dump_stack.c:88
 dump_stack_lvl+0x110/0x170 lib/dump_stack.c:106
 print_address_description+0x71/0x200 mm/kasan/report.c:316
 print_report+0x4a/0x60 mm/kasan/report.c:420
 kasan_report+0x122/0x150 mm/kasan/report.c:524
 __asan_report_load1_noabort+0x14/0x20 mm/kasan/report_generic.c:348
 ext4_htree_fill_tree+0x1080/0x10e0 fs/ext4/namei.c:1246
 ext4_dx_readdir fs/ext4/dir.c:608 [inline]
 ext4_readdir+0x2d9f/0x3c10 fs/ext4/dir.c:145
 iterate_dir+0x26d/0x610 fs/readdir.c:-1
 __do_sys_getdents64 fs/readdir.c:369 [inline]
 __se_sys_getdents64+0xf2/0x250 fs/readdir.c:354
 __x64_sys_getdents64+0x7b/0x90 fs/readdir.c:354
 x64_sys_call+0x15c/0x9a0 arch/x86/include/generated/asm/syscalls_64.h:218
 do_syscall_x64 arch/x86/entry/common.c:46 [inline]
 do_syscall_64+0x4c/0xa0 arch/x86/entry/common.c:76
 entry_SYSCALL_64_after_hwframe+0x68/0xd2
RIP: 0033:0x7fe3ddbc6af3
Code: c7 c0 e8 ff ff ff 64 c7 00 16 00 00 00 31 c0 eb 9e e8 81 9b fd ff 90 b8 ff ff ff 7f 48 39 c2 48 0f 47 d0 b8 d9 00 00 00 0f 05 <48> 3d 00 f0 ff ff 77 05 c3 0f 1f 40 00 48 c7 c2 e8 ff ff ff f7 d8
RSP: 002b:00007ffc1d3518b8 EFLAGS: 00000293 ORIG_RAX: 00000000000000d9
RAX: ffffffffffffffda RBX: 000055555dc8b910 RCX: 00007fe3ddbc6af3
RDX: 0000000000008000 RSI: 000055555dc8b940 RDI: 0000000000000005
RBP: 000055555dc8b940 R08: 0000000000028701 R09: 0000000000000001
R10: 00007fe3dddf2e20 R11: 0000000000000293 R12: 000055555dc8b914
R13: ffffffffffffffe8 R14: 0000000000000010 R15: 00007ffc1d353b60
 </TASK>

Allocated by task 301:
 kasan_save_stack mm/kasan/common.c:46 [inline]
 kasan_set_track+0x4b/0x70 mm/kasan/common.c:53
 kasan_save_alloc_info+0x1f/0x30 mm/kasan/generic.c:505
 __kasan_slab_alloc+0x72/0x80 mm/kasan/common.c:334
 kasan_slab_alloc include/linux/kasan.h:202 [inline]
 slab_post_alloc_hook+0x4f/0x2d0 mm/slab.h:768
 slab_alloc_node mm/slub.c:3382 [inline]
 kmem_cache_alloc_node+0x179/0x330 mm/slub.c:3429
 __alloc_skb+0xe8/0x4a0 net/core/skbuff.c:508
 alloc_skb_fclone include/linux/skbuff.h:1372 [inline]
 tcp_stream_alloc_skb+0x47/0x360 net/ipv4/tcp.c:871
 tcp_sendmsg_locked+0xcb7/0x39f0 net/ipv4/tcp.c:1334
 tcp_sendmsg+0x2f/0x50 net/ipv4/tcp.c:1492
 inet_sendmsg+0xb6/0xd0 net/ipv4/af_inet.c:841
 sock_sendmsg_nosec net/socket.c:716 [inline]
 __sock_sendmsg net/socket.c:728 [inline]
 sock_write_iter+0x2ea/0x3f0 net/socket.c:1134
 call_write_iter include/linux/fs.h:2282 [inline]
 new_sync_write fs/read_write.c:491 [inline]
 vfs_write+0x5ef/0xd00 fs/read_write.c:584
 ksys_write+0x14a/0x260 fs/read_write.c:637
 __do_sys_write fs/read_write.c:649 [inline]
 __se_sys_write fs/read_write.c:646 [inline]
 __x64_sys_write+0x7b/0x90 fs/read_write.c:646
 x64_sys_call+0x27b/0x9a0 arch/x86/include/generated/asm/syscalls_64.h:2
 do_syscall_x64 arch/x86/entry/common.c:46 [inline]
 do_syscall_64+0x4c/0xa0 arch/x86/entry/common.c:76
 entry_SYSCALL_64_after_hwframe+0x68/0xd2

Freed by task 301:
 kasan_save_stack mm/kasan/common.c:46 [inline]
 kasan_set_track+0x4b/0x70 mm/kasan/common.c:53
 kasan_save_free_info+0x2b/0x40 mm/kasan/generic.c:516
 ____kasan_slab_free+0x132/0x180 mm/kasan/common.c:242
 __kasan_slab_free+0x11/0x20 mm/kasan/common.c:250
 kasan_slab_free include/linux/kasan.h:178 [inline]
 slab_free_hook mm/slub.c:1750 [inline]
 slab_free_freelist_hook+0xc2/0x190 mm/slub.c:1776
 slab_free mm/slub.c:3712 [inline]
 kmem_cache_free+0x12d/0x300 mm/slub.c:3737
 kfree_skbmem+0x10c/0x180 net/core/skbuff.c:-1
 __kfree_skb net/core/skbuff.c:874 [inline]
 consume_skb+0xb3/0x1f0 net/core/skbuff.c:1038
 __dev_kfree_skb_any+0x12f/0x150 net/core/dev.c:3231
 dev_consume_skb_any include/linux/netdevice.h:3898 [inline]
 napi_consume_skb+0x15d/0x2c0 net/core/skbuff.c:1098
 free_old_xmit_skbs+0x10e/0x280 drivers/net/virtio_net.c:1639
 start_xmit+0x175/0x16a0 drivers/net/virtio_net.c:1901
 __netdev_start_xmit include/linux/netdevice.h:4930 [inline]
 netdev_start_xmit include/linux/netdevice.h:4944 [inline]
 xmit_one net/core/dev.c:3706 [inline]
 dev_hard_start_xmit+0x207/0x730 net/core/dev.c:3722
 sch_direct_xmit+0x279/0x9c0 net/sched/sch_generic.c:345
 __dev_xmit_skb net/core/dev.c:3943 [inline]
 __dev_queue_xmit+0x163e/0x3540 net/core/dev.c:4348
 dev_queue_xmit include/linux/netdevice.h:3085 [inline]
 neigh_hh_output include/net/neighbour.h:536 [inline]
 neigh_output include/net/neighbour.h:550 [inline]
 ip_finish_output2+0xc07/0xf50 net/ipv4/ip_output.c:228
 __ip_finish_output+0x172/0x370 net/ipv4/ip_output.c:-1
 ip_finish_output+0x31/0x2b0 net/ipv4/ip_output.c:316
 NF_HOOK_COND include/linux/netfilter.h:294 [inline]
 ip_output+0x1ea/0x390 net/ipv4/ip_output.c:434
 dst_output include/net/dst.h:453 [inline]
 ip_local_out net/ipv4/ip_output.c:126 [inline]
 __ip_queue_xmit+0x1129/0x1cf0 net/ipv4/ip_output.c:538
 ip_queue_xmit+0x4d/0x70 net/ipv4/ip_output.c:552
 __tcp_transmit_skb+0x1e0c/0x3410 net/ipv4/tcp_output.c:1408
 tcp_transmit_skb net/ipv4/tcp_output.c:1426 [inline]
 tcp_write_xmit+0x17e1/0x5e20 net/ipv4/tcp_output.c:2723
 __tcp_push_pending_frames+0x99/0x2f0 net/ipv4/tcp_output.c:2908
 tcp_push+0x484/0x660 net/ipv4/tcp.c:738
 tcp_sendmsg_locked+0x323e/0x39f0 net/ipv4/tcp.c:1464
 tcp_sendmsg+0x2f/0x50 net/ipv4/tcp.c:1492
 inet_sendmsg+0xb6/0xd0 net/ipv4/af_inet.c:841
 sock_sendmsg_nosec net/socket.c:716 [inline]
 __sock_sendmsg net/socket.c:728 [inline]
 sock_write_iter+0x2ea/0x3f0 net/socket.c:1134
 call_write_iter include/linux/fs.h:2282 [inline]
 new_sync_write fs/read_write.c:491 [inline]
 vfs_write+0x5ef/0xd00 fs/read_write.c:584
 ksys_write+0x14a/0x260 fs/read_write.c:637
 __do_sys_write fs/read_write.c:649 [inline]
 __se_sys_write fs/read_write.c:646 [inline]
 __x64_sys_write+0x7b/0x90 fs/read_write.c:646
 x64_sys_call+0x27b/0x9a0 arch/x86/include/generated/asm/syscalls_64.h:2
 do_syscall_x64 arch/x86/entry/common.c:46 [inline]
 do_syscall_64+0x4c/0xa0 arch/x86/entry/common.c:76
 entry_SYSCALL_64_after_hwframe+0x68/0xd2

The buggy address belongs to the object at ffff888121a78dc0
 which belongs to the cache skbuff_fclone_cache of size 520
The buggy address is located 442 bytes inside of
 520-byte region [ffff888121a78dc0, ffff888121a78fc8)

The buggy address belongs to the physical page:
page:ffffea0004869e00 refcount:1 mapcount:0 mapping:0000000000000000 index:0x0 pfn:0x121a78
head:ffffea0004869e00 order:2 compound_mapcount:0 compound_pincount:0
flags: 0x4000000000010200(slab|head|zone=1)
raw: 4000000000010200 0000000000000000 dead000000000122 ffff8881001f1500
raw: 0000000000000000 0000000000170017 00000001ffffffff 0000000000000000
page dumped because: kasan: bad access detected
page_owner tracks the page as allocated
page last allocated via order 2, migratetype Unmovable, gfp_mask 0x1d20c0(__GFP_IO|__GFP_FS|__GFP_NOWARN|__GFP_NORETRY|__GFP_COMP|__GFP_NOMEMALLOC|__GFP_HARDWALL), pid 301, tgid 301 (sshd-session), ts 29789139011, free_ts 28823832480
 set_page_owner include/linux/page_owner.h:33 [inline]
 post_alloc_hook+0x1f5/0x210 mm/page_alloc.c:2673
 prep_new_page+0x1c/0x110 mm/page_alloc.c:2680
 get_page_from_freelist+0x2ca9/0x2d20 mm/page_alloc.c:4587
 __alloc_pages+0x1fa/0x610 mm/page_alloc.c:5931
 alloc_slab_page+0x6e/0xf0 include/linux/gfp.h:-1
 allocate_slab mm/slub.c:1967 [inline]
 new_slab+0x98/0x3e0 mm/slub.c:2020
 ___slab_alloc+0x70f/0xb70 mm/slub.c:3177
 __slab_alloc+0x5e/0xa0 mm/slub.c:3263
 slab_alloc_node mm/slub.c:3348 [inline]
 kmem_cache_alloc_node+0x1ba/0x330 mm/slub.c:3429
 __alloc_skb+0xe8/0x4a0 net/core/skbuff.c:508
 alloc_skb_fclone include/linux/skbuff.h:1372 [inline]
 tcp_stream_alloc_skb+0x47/0x360 net/ipv4/tcp.c:871
 tcp_sendmsg_locked+0xcb7/0x39f0 net/ipv4/tcp.c:1334
 tcp_sendmsg+0x2f/0x50 net/ipv4/tcp.c:1492
 inet_sendmsg+0xb6/0xd0 net/ipv4/af_inet.c:841
 sock_sendmsg_nosec net/socket.c:716 [inline]
 __sock_sendmsg net/socket.c:728 [inline]
 sock_write_iter+0x2ea/0x3f0 net/socket.c:1134
 call_write_iter include/linux/fs.h:2282 [inline]
 new_sync_write fs/read_write.c:491 [inline]
 vfs_write+0x5ef/0xd00 fs/read_write.c:584
page last free stack trace:
 reset_page_owner include/linux/page_owner.h:26 [inline]
 free_pages_prepare mm/page_alloc.c:1581 [inline]
 free_pcp_prepare mm/page_alloc.c:1655 [inline]
 free_unref_page_prepare+0x81b/0x820 mm/page_alloc.c:3622
 free_unref_page+0x93/0x530 mm/page_alloc.c:3720
 free_the_page mm/page_alloc.c:863 [inline]
 __free_pages+0x67/0x100 mm/page_alloc.c:6021
 __vunmap+0xa3c/0xc00 mm/vmalloc.c:2739
 __vfree mm/vmalloc.c:2788 [inline]
 vfree+0x61/0x90 mm/vmalloc.c:2819
 kcov_put kernel/kcov.c:437 [inline]
 kcov_close+0x2b/0x50 kernel/kcov.c:533
 __fput+0x1fd/0x8f0 fs/file_table.c:320
 ____fput+0x15/0x20 fs/file_table.c:348
 task_work_run+0x1e1/0x250 kernel/task_work.c:203
 exit_task_work include/linux/task_work.h:39 [inline]
 do_exit+0xb0d/0x29f0 kernel/exit.c:896
 do_group_exit+0x21b/0x2e0 kernel/exit.c:1040
 get_signal+0x167c/0x1700 kernel/signal.c:2904
 arch_do_signal_or_restart+0xd1/0x11c0 arch/x86/kernel/signal.c:871
 exit_to_user_mode_loop+0x7a/0xb0 kernel/entry/common.c:174
 exit_to_user_mode_prepare+0x87/0xd0 kernel/entry/common.c:210
 __syscall_exit_to_user_mode_work kernel/entry/common.c:292 [inline]
 syscall_exit_to_user_mode+0x1a/0x30 kernel/entry/common.c:303

Memory state around the buggy address:
 ffff888121a78e00: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
 ffff888121a78e80: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
>ffff888121a78f00: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
                                                                ^
 ffff888121a78f80: fb fb fb fb fb fb fb fb fb fc fc fc fc fc fc fc
 ffff888121a79000: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
==================================================================
EXT4-fs error (device loop3): htree_dirblock_to_tree:1112: inode #2: block 33: comm syz-executor: bad entry in directory: inode out of bounds - offset=2012, inode=128, rec_len=36, size=1024 fake=1
EXT4-fs (loop3): unmounting filesystem.

Crashes (10):
Time Kernel Commit Syzkaller Config Log Report Syz repro C repro VM info Assets (help?) Manager Title
2026/10/05 03:05 android14-6.1 6612ef9d0b09 57bbd979 .config strace log report syz / log [disk image] [vmlinux] [kernel image] [mounted in repro (corrupt fs)] ci2-android-6-1 KASAN: use-after-free Read in ext4_htree_fill_tree
2025/02/16 08:09 android14-6.1 ccc915784332 40a34ec9 .config console log report syz / log [disk image] [vmlinux] [kernel image] [mounted in repro #1 (clean fs)] [mounted in repro #2 (corrupt fs)] ci2-android-6-1 KASAN: use-after-free Read in ext4_htree_fill_tree
2025/03/30 05:47 android14-6.1 c1fd50266bd6 d3999433 .config console log report syz / log [disk image] [vmlinux] [kernel image] [mounted in repro (clean fs)] ci2-android-6-1 KASAN: slab-out-of-bounds Read in ext4_htree_fill_tree
2025/02/26 11:01 android14-6.1 f27efe75fc87 d34966d1 .config console log report syz / log [disk image] [vmlinux] [kernel image] [mounted in repro (clean fs)] ci2-android-6-1 KASAN: slab-out-of-bounds Read in ext4_htree_fill_tree
2025/01/28 07:33 android14-6.1 11620ab958c2 18070896 .config console log report syz / log [disk image] [vmlinux] [kernel image] [mounted in repro] ci2-android-6-1 KASAN: slab-out-of-bounds Read in ext4_htree_fill_tree
2025/01/11 20:08 android14-6.1 770852bf7d99 6dbc6a9b .config console log report syz / log [disk image] [vmlinux] [kernel image] [mounted in repro] ci2-android-6-1 KASAN: slab-out-of-bounds Read in ext4_htree_fill_tree
2024/12/22 23:31 android14-6.1 3e3f2b9e9fca b4fbdbd4 .config console log report syz / log [disk image] [vmlinux] [kernel image] [mounted in repro] ci2-android-6-1 KASAN: use-after-free Read in ext4_htree_fill_tree
2024/12/22 22:04 android14-6.1 3e3f2b9e9fca b4fbdbd4 .config strace log report syz / log C [disk image] [vmlinux] [kernel image] [mounted in repro] ci2-android-6-1 KASAN: use-after-free Read in ext4_htree_fill_tree
2024/12/22 19:06 android14-6.1 3e3f2b9e9fca b4fbdbd4 .config strace log report syz / log C [disk image] [vmlinux] [kernel image] [mounted in repro] ci2-android-6-1 KASAN: use-after-free Read in ext4_htree_fill_tree
2024/12/22 20:25 android14-6.1 3e3f2b9e9fca b4fbdbd4 .config strace log report syz / log C [disk image] [vmlinux] [kernel image] [mounted in repro] ci2-android-6-1 KASAN: slab-out-of-bounds Read in ext4_htree_fill_tree
* Struck through repros no longer work on HEAD.