syzbot
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
▶
▼
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
|
▶
▼
Last patch testing requests (6)
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.
* Struck through repros no longer work on HEAD.