syzbot


KASAN: use-after-free Read in f2fs_inode_synced

Status: upstream: reported C repro on 2025/04/28 14:08
Reported-by: syzbot+ca3e11229c92c86da445@syzkaller.appspotmail.com
First crash: 37d, last: 31d
Similar bugs (1)
Kernel Title Repro Cause bisect Fix bisect Count Last Reported Patched Status
android-6-1 KASAN: use-after-free Read in f2fs_inode_synced origin:lts C 4 28d 43d 0/2 upstream: reported C repro on 2025/04/22 13:15
Last patch testing requests (5)
Created Duration User Patch Repo Result
2025/05/21 14:09 16m retest repro android12-5.4 error
2025/05/21 14:09 16m retest repro android12-5.4 error
2025/05/21 14:09 16m retest repro android12-5.4 error
2025/05/21 14:09 15m retest repro android12-5.4 error
2025/05/21 14:09 11m retest repro android12-5.4 error

Sample crash report:
RBP: 00007ffc748898e0 R08: 0000000000000000 R09: 0000000000000000
R10: 0000000000000100 R11: 0000000000000206 R12: 00007ffc7488a9d0
R13: 00005555861d8700 R14: 0000000000000001 R15: 431bde82d7b634db
---[ end trace d8f6aa875f319ce5 ]---
==================================================================
BUG: KASAN: use-after-free in __list_del_entry_valid+0xa6/0x120 lib/list_debug.c:62
Read of size 8 at addr ffff8881dcf54a10 by task syz-executor186/342

CPU: 1 PID: 342 Comm: syz-executor186 Tainted: G        W         5.4.292-syzkaller-00021-gcd8e74fa0fa3 #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 02/12/2025
Call Trace:
 __dump_stack+0x1e/0x20 lib/dump_stack.c:77
 dump_stack+0x15b/0x1b8 lib/dump_stack.c:118
 print_address_description+0x8d/0x4c0 mm/kasan/report.c:384
 __kasan_report+0xef/0x120 mm/kasan/report.c:516
 kasan_report+0x30/0x60 mm/kasan/common.c:653
 __asan_report_load8_noabort+0x14/0x20 mm/kasan/generic_report.c:132
 __list_del_entry_valid+0xa6/0x120 lib/list_debug.c:62
 __list_del_entry include/linux/list.h:131 [inline]
 list_del_init include/linux/list.h:190 [inline]
 f2fs_inode_synced+0xf4/0x2d0 fs/f2fs/super.c:1363
 f2fs_update_inode+0x77/0x1aa0 fs/f2fs/inode.c:589
 f2fs_update_inode_page fs/f2fs/inode.c:703 [inline]
 f2fs_write_inode+0x5a1/0x8c0 fs/f2fs/inode.c:731
 write_inode fs/fs-writeback.c:1326 [inline]
 __writeback_single_inode+0x4e2/0xc30 fs/fs-writeback.c:1524
 writeback_single_inode+0x216/0x630 fs/fs-writeback.c:1578
 sync_inode fs/fs-writeback.c:2591 [inline]
 sync_inode_metadata+0xa8/0xf0 fs/fs-writeback.c:2611
 f2fs_sync_inode_meta+0x167/0x280 fs/f2fs/checkpoint.c:1141
 block_operations fs/f2fs/checkpoint.c:1246 [inline]
 f2fs_write_checkpoint+0x9f0/0x1c50 fs/f2fs/checkpoint.c:1630
 kill_f2fs_super+0x231/0x390 fs/f2fs/super.c:4342
 deactivate_locked_super+0xa0/0x100 fs/super.c:335
 deactivate_super+0x14f/0x1d0 fs/super.c:366
 cleanup_mnt+0x446/0x500 fs/namespace.c:1102
 __cleanup_mnt+0x19/0x20 fs/namespace.c:1109
 task_work_run+0x146/0x170 kernel/task_work.c:113
 exit_task_work include/linux/task_work.h:22 [inline]
 do_exit+0xa43/0x2660 kernel/exit.c:861
 do_group_exit+0x13e/0x300 kernel/exit.c:984
 __do_sys_exit_group kernel/exit.c:995 [inline]
 __se_sys_exit_group kernel/exit.c:993 [inline]
 __x64_sys_exit_group+0x3f/0x40 kernel/exit.c:993
 do_syscall_64+0xcf/0x170 arch/x86/entry/common.c:290
 entry_SYSCALL_64_after_hwframe+0x5c/0xc1
RIP: 0033:0x7f6b76d90e49
Code: Bad RIP value.
RSP: 002b:00007ffc748886d8 EFLAGS: 00000246 ORIG_RAX: 00000000000000e7
RAX: ffffffffffffffda RBX: 0000000000000001 RCX: 00007f6b76d90e49
RDX: 000000000000003c RSI: 00000000000000e7 RDI: 0000000000000001
RBP: 00007f6b76e20370 R08: ffffffffffffffb8 R09: 0000000000000000
R10: 0000000000000100 R11: 0000000000000246 R12: 00007f6b76e20370
R13: 0000000000000000 R14: 00007f6b76e22140 R15: 00007f6b76d5ec40

Allocated by task 344:
 save_stack mm/kasan/common.c:70 [inline]
 set_track mm/kasan/common.c:78 [inline]
 __kasan_kmalloc+0x162/0x200 mm/kasan/common.c:529
 kasan_slab_alloc+0x12/0x20 mm/kasan/common.c:537
 slab_post_alloc_hook mm/slab.h:584 [inline]
 slab_alloc_node mm/slub.c:2829 [inline]
 slab_alloc mm/slub.c:2837 [inline]
 kmem_cache_alloc+0xe2/0x270 mm/slub.c:2842
 f2fs_alloc_inode+0x26/0x3b0 fs/f2fs/super.c:1241
 alloc_inode fs/inode.c:231 [inline]
 iget_locked+0x144/0x810 fs/inode.c:1273
 f2fs_iget+0x55/0x4ac0 fs/f2fs/inode.c:499
 f2fs_lookup+0x3ce/0xe00 fs/f2fs/namei.c:529
 __lookup_slow+0x2cd/0x410 fs/namei.c:1748
 lookup_slow+0x57/0x70 fs/namei.c:1765
 walk_component+0x237/0x400 fs/namei.c:1885
 lookup_last fs/namei.c:2348 [inline]
 path_lookupat+0x179/0x3f0 fs/namei.c:2393
 filename_lookup+0x1bf/0x5f0 fs/namei.c:2423
 user_path_at_empty+0x43/0x50 fs/namei.c:2703
 user_path_at include/linux/namei.h:49 [inline]
 vfs_statx+0x116/0x200 fs/stat.c:187
 vfs_lstat include/linux/fs.h:3383 [inline]
 __do_sys_newlstat fs/stat.c:353 [inline]
 __se_sys_newlstat+0xbe/0x330 fs/stat.c:347
 __x64_sys_newlstat+0x5b/0x70 fs/stat.c:347
 do_syscall_64+0xcf/0x170 arch/x86/entry/common.c:290
 entry_SYSCALL_64_after_hwframe+0x5c/0xc1

Freed by task 17:
 save_stack mm/kasan/common.c:70 [inline]
 set_track mm/kasan/common.c:78 [inline]
 kasan_set_free_info mm/kasan/common.c:345 [inline]
 __kasan_slab_free+0x1c3/0x280 mm/kasan/common.c:487
 kasan_slab_free+0xe/0x10 mm/kasan/common.c:496
 slab_free_hook mm/slub.c:1455 [inline]
 slab_free_freelist_hook+0xb7/0x180 mm/slub.c:1494
 slab_free mm/slub.c:3080 [inline]
 kmem_cache_free+0x10c/0x2c0 mm/slub.c:3096
 f2fs_free_inode+0x24/0x30 fs/f2fs/super.c:1397
 i_callback+0x4c/0x70 fs/inode.c:220
 __rcu_reclaim kernel/rcu/rcu.h:222 [inline]
 rcu_do_batch+0x446/0x980 kernel/rcu/tree.c:2167
 rcu_core+0x4bd/0xbd0 kernel/rcu/tree.c:2387
 rcu_core_si+0x9/0x10 kernel/rcu/tree.c:2396
 __do_softirq+0x236/0x660 kernel/softirq.c:292

The buggy address belongs to the object at ffff8881dcf546b0
 which belongs to the cache f2fs_inode_cache of size 1264
The buggy address is located 864 bytes inside of
 1264-byte region [ffff8881dcf546b0, ffff8881dcf54ba0)
The buggy address belongs to the page:
page:ffffea000773d400 refcount:1 mapcount:0 mapping:ffff8881f0fd6f00 index:0x0 compound_mapcount: 0
flags: 0x8000000000010200(slab|head)
raw: 8000000000010200 dead000000000100 dead000000000122 ffff8881f0fd6f00
raw: 0000000000000000 0000000080170017 00000001ffffffff 0000000000000000
page dumped because: kasan: bad access detected
page_owner tracks the page as allocated
page last allocated via order 3, migratetype Reclaimable, gfp_mask 0xd2050(__GFP_IO|__GFP_NOWARN|__GFP_NORETRY|__GFP_COMP|__GFP_NOMEMALLOC|__GFP_RECLAIMABLE)
 set_page_owner include/linux/page_owner.h:31 [inline]
 post_alloc_hook mm/page_alloc.c:2165 [inline]
 prep_new_page+0x35e/0x370 mm/page_alloc.c:2171
 get_page_from_freelist+0x1296/0x1310 mm/page_alloc.c:3794
 __alloc_pages_nodemask+0x202/0x4b0 mm/page_alloc.c:4894
 alloc_slab_page+0x3c/0x3b0 mm/slub.c:343
 allocate_slab mm/slub.c:1683 [inline]
 new_slab+0x93/0x420 mm/slub.c:1749
 new_slab_objects mm/slub.c:2505 [inline]
 ___slab_alloc+0x29e/0x420 mm/slub.c:2667
 __slab_alloc+0x63/0xa0 mm/slub.c:2707
 slab_alloc_node mm/slub.c:2792 [inline]
 slab_alloc mm/slub.c:2837 [inline]
 kmem_cache_alloc+0x12c/0x270 mm/slub.c:2842
 f2fs_alloc_inode+0x26/0x3b0 fs/f2fs/super.c:1241
 alloc_inode fs/inode.c:231 [inline]
 iget_locked+0x144/0x810 fs/inode.c:1273
 f2fs_iget+0x55/0x4ac0 fs/f2fs/inode.c:499
 f2fs_fill_super+0x44fc/0x7760 fs/f2fs/super.c:3963
 mount_bdev+0x279/0x390 fs/super.c:1428
 f2fs_mount+0x34/0x40 fs/f2fs/super.c:4316
 legacy_get_tree+0xea/0x190 fs/fs_context.c:648
 vfs_get_tree+0x89/0x260 fs/super.c:1558
page_owner free stack trace missing

Memory state around the buggy address:
 ffff8881dcf54900: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
 ffff8881dcf54980: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
>ffff8881dcf54a00: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
                         ^
 ffff8881dcf54a80: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
 ffff8881dcf54b00: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
==================================================================

Crashes (6):
Time Kernel Commit Syzkaller Config Log Report Syz repro C repro VM info Assets (help?) Manager Title
2025/05/04 08:44 android12-5.4 cd8e74fa0fa3 b0714e37 .config strace log report syz / log C [disk image] [vmlinux] [kernel image] [mounted in repro (corrupt fs)] ci2-android-5-4-kasan KASAN: use-after-free Read in f2fs_inode_synced
2025/04/28 18:21 android12-5.4 cd8e74fa0fa3 c6b4fb39 .config strace log report syz / log C [disk image] [vmlinux] [kernel image] [mounted in repro (corrupt fs)] ci2-android-5-4-kasan KASAN: use-after-free Read in f2fs_inode_synced
2025/04/28 17:05 android12-5.4 cd8e74fa0fa3 c6b4fb39 .config strace log report syz / log C [disk image] [vmlinux] [kernel image] [mounted in repro (corrupt fs)] ci2-android-5-4-kasan KASAN: use-after-free Read in f2fs_inode_synced
2025/04/28 15:29 android12-5.4 cd8e74fa0fa3 c6b4fb39 .config strace log report syz / log C [disk image] [vmlinux] [kernel image] [mounted in repro (corrupt fs)] ci2-android-5-4-kasan KASAN: use-after-free Read in f2fs_inode_synced
2025/04/28 14:02 android12-5.4 cd8e74fa0fa3 c6b4fb39 .config strace log report syz / log C [disk image] [vmlinux] [kernel image] [mounted in repro (corrupt fs)] ci2-android-5-4-kasan KASAN: use-after-free Read in f2fs_inode_synced
2025/04/28 12:47 android12-5.4 cd8e74fa0fa3 c6b4fb39 .config console log report info [disk image] [vmlinux] [kernel image] ci2-android-5-4-kasan KASAN: use-after-free Read in f2fs_inode_synced
* Struck through repros no longer work on HEAD.