[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-Id: <20251129103449.3617583b94eecc0d90cfa0b5@linux-foundation.org>
Date: Sat, 29 Nov 2025 10:34:49 -0800
From: Andrew Morton <akpm@...ux-foundation.org>
To: syzbot <syzbot+6663075ddb9be85fa6e5@...kaller.appspotmail.com>
Cc: david@...morbit.com, hughd@...gle.com, kent.overstreet@...ux.dev,
linux-bcachefs@...r.kernel.org, linux-kernel@...r.kernel.org,
linux-mm@...ck.org, muchun.song@...ux.dev, roman.gushchin@...ux.dev,
syzkaller-bugs@...glegroups.com, zhengqi.arch@...edance.com,
gfs2@...ts.linux.dev
Subject: Re: [syzbot] [mm?] KASAN: slab-use-after-free Read in list_lru_del
On Fri, 28 Nov 2025 13:46:26 -0800 syzbot <syzbot+6663075ddb9be85fa6e5@...kaller.appspotmail.com> wrote:
> syzbot has found a reproducer for the following issue on:
>
> HEAD commit: e538109ac71d Merge tag 'drm-fixes-2025-11-28' of https://g..
> git tree: upstream
> console output: https://syzkaller.appspot.com/x/log.txt?x=10fd2112580000
> kernel config: https://syzkaller.appspot.com/x/.config?x=a1db0fea040c2a9f
> dashboard link: https://syzkaller.appspot.com/bug?extid=6663075ddb9be85fa6e5
> compiler: Debian clang version 20.1.8 (++20250708063551+0c9f909b7976-1~exp1~20250708183702.136), Debian LLD 20.1.8
> syz repro: https://syzkaller.appspot.com/x/repro.syz?x=12fd2112580000
> C reproducer: https://syzkaller.appspot.com/x/repro.c?x=15a10112580000
>
> Downloadable assets:
> disk image (non-bootable): https://storage.googleapis.com/syzbot-assets/d900f083ada3/non_bootable_disk-e538109a.raw.xz
> vmlinux: https://storage.googleapis.com/syzbot-assets/3cf595fe0afc/vmlinux-e538109a.xz
> kernel image: https://storage.googleapis.com/syzbot-assets/e6e26f95e409/bzImage-e538109a.xz
> mounted in repro: https://storage.googleapis.com/syzbot-assets/445f48d13fdb/mount_7.gz
> fsck result: failed (log: https://syzkaller.appspot.com/x/fsck.log?x=11a10112580000)
>
> The issue was bisected to:
>
> commit 14152654805256d760315ec24e414363bfa19a06
> Author: Kent Overstreet <kent.overstreet@...ux.dev>
> Date: Mon Nov 25 05:21:27 2024 +0000
>
> bcachefs: Bad btree roots are now autofix
>
> bisection log: https://syzkaller.appspot.com/x/bisect.txt?x=108d43a8580000
> final oops: https://syzkaller.appspot.com/x/report.txt?x=128d43a8580000
> console output: https://syzkaller.appspot.com/x/log.txt?x=148d43a8580000
Thanks.
Bisection obviously went wrong.
I'll cc the gfs2 list.
> IMPORTANT: if you fix the issue, please add the following tag to the commit:
> Reported-by: syzbot+6663075ddb9be85fa6e5@...kaller.appspotmail.com
> Fixes: 141526548052 ("bcachefs: Bad btree roots are now autofix")
>
> ==================================================================
> BUG: KASAN: slab-use-after-free in __list_del_entry_valid_or_report+0xb5/0x190 lib/list_debug.c:65
> Read of size 8 at addr ffff88800098a080 by task syz.0.17/5483
>
> CPU: 0 UID: 0 PID: 5483 Comm: syz.0.17 Not tainted syzkaller #0 PREEMPT(full)
> Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.3-debian-1.16.3-2~bpo12+1 04/01/2014
> Call Trace:
> <TASK>
> dump_stack_lvl+0x189/0x250 lib/dump_stack.c:120
> print_address_description mm/kasan/report.c:378 [inline]
> print_report+0xca/0x240 mm/kasan/report.c:482
> kasan_report+0x118/0x150 mm/kasan/report.c:595
> __list_del_entry_valid_or_report+0xb5/0x190 lib/list_debug.c:65
> __list_del_entry_valid include/linux/list.h:132 [inline]
> __list_del_entry include/linux/list.h:223 [inline]
> list_del_init include/linux/list.h:295 [inline]
> list_lru_del+0x98/0x210 mm/list_lru.c:210
> gfs2_quota_cleanup+0x21e/0x6f0 fs/gfs2/quota.c:1532
> gfs2_make_fs_ro+0x27a/0x300 fs/gfs2/super.c:566
> gfs2_put_super+0x224/0x950 fs/gfs2/super.c:598
> generic_shutdown_super+0x135/0x2c0 fs/super.c:642
> kill_block_super+0x44/0x90 fs/super.c:1729
> deactivate_locked_super+0xbc/0x130 fs/super.c:473
> cleanup_mnt+0x425/0x4c0 fs/namespace.c:1318
> task_work_run+0x1d4/0x260 kernel/task_work.c:227
> exit_task_work include/linux/task_work.h:40 [inline]
> do_exit+0x6b5/0x2300 kernel/exit.c:966
> do_group_exit+0x21c/0x2d0 kernel/exit.c:1107
> __do_sys_exit_group kernel/exit.c:1118 [inline]
> __se_sys_exit_group kernel/exit.c:1116 [inline]
> __x64_sys_exit_group+0x3f/0x40 kernel/exit.c:1116
> x64_sys_call+0x21f7/0x2200 arch/x86/include/generated/asm/syscalls_64.h:232
> do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]
> do_syscall_64+0xfa/0xfa0 arch/x86/entry/syscall_64.c:94
> entry_SYSCALL_64_after_hwframe+0x77/0x7f
> RIP: 0033:0x7f4bb3d8f7c9
> Code: Unable to access opcode bytes at 0x7f4bb3d8f79f.
> RSP: 002b:00007ffd56395328 EFLAGS: 00000246 ORIG_RAX: 00000000000000e7
> RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007f4bb3d8f7c9
> RDX: 0000000000000064 RSI: 0000000000000000 RDI: 0000000000000000
> RBP: 0000000000000003 R08: 0000001d5639541f R09: 00007f4bb3fb4280
> R10: 0000000000000001 R11: 0000000000000246 R12: 0000000000000000
> R13: 00007f4bb3fb4280 R14: 0000000000000003 R15: 00007ffd563953e0
> </TASK>
>
> Allocated by task 5483:
> kasan_save_stack mm/kasan/common.c:56 [inline]
> kasan_save_track+0x3e/0x80 mm/kasan/common.c:77
> unpoison_slab_object mm/kasan/common.c:342 [inline]
> __kasan_slab_alloc+0x6c/0x80 mm/kasan/common.c:368
> kasan_slab_alloc include/linux/kasan.h:252 [inline]
> slab_post_alloc_hook mm/slub.c:4978 [inline]
> slab_alloc_node mm/slub.c:5288 [inline]
> kmem_cache_alloc_noprof+0x367/0x6e0 mm/slub.c:5295
> qd_alloc+0x50/0x250 fs/gfs2/quota.c:234
> gfs2_quota_init+0x762/0x1200 fs/gfs2/quota.c:1448
> gfs2_make_fs_rw+0x181/0x2b0 fs/gfs2/super.c:149
> gfs2_fill_super+0x1a7b/0x20d0 fs/gfs2/ops_fstype.c:1280
> get_tree_bdev_flags+0x40e/0x4d0 fs/super.c:1698
> gfs2_get_tree+0x51/0x1e0 fs/gfs2/ops_fstype.c:1337
> vfs_get_tree+0x92/0x2b0 fs/super.c:1758
> fc_mount fs/namespace.c:1199 [inline]
> do_new_mount_fc fs/namespace.c:3642 [inline]
> do_new_mount+0x302/0xa10 fs/namespace.c:3718
> do_mount fs/namespace.c:4041 [inline]
> __do_sys_mount fs/namespace.c:4229 [inline]
> __se_sys_mount+0x313/0x410 fs/namespace.c:4206
> do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]
> do_syscall_64+0xfa/0xfa0 arch/x86/entry/syscall_64.c:94
> entry_SYSCALL_64_after_hwframe+0x77/0x7f
>
> Freed by task 15:
> kasan_save_stack mm/kasan/common.c:56 [inline]
> kasan_save_track+0x3e/0x80 mm/kasan/common.c:77
> __kasan_save_free_info+0x46/0x50 mm/kasan/generic.c:587
> kasan_save_free_info mm/kasan/kasan.h:406 [inline]
> poison_slab_object mm/kasan/common.c:252 [inline]
> __kasan_slab_free+0x5c/0x80 mm/kasan/common.c:284
> kasan_slab_free include/linux/kasan.h:234 [inline]
> slab_free_hook mm/slub.c:2543 [inline]
> slab_free mm/slub.c:6642 [inline]
> kmem_cache_free+0x19b/0x690 mm/slub.c:6752
> gfs2_qd_dealloc+0x70/0xe0 fs/gfs2/quota.c:111
> rcu_do_batch kernel/rcu/tree.c:2605 [inline]
> rcu_core+0xcab/0x1770 kernel/rcu/tree.c:2861
> handle_softirqs+0x286/0x870 kernel/softirq.c:622
> run_ksoftirqd+0x9b/0x100 kernel/softirq.c:1063
> smpboot_thread_fn+0x542/0xa60 kernel/smpboot.c:160
> kthread+0x711/0x8a0 kernel/kthread.c:463
> ret_from_fork+0x4bc/0x870 arch/x86/kernel/process.c:158
> ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:245
>
> Last potentially related work creation:
> kasan_save_stack+0x3e/0x60 mm/kasan/common.c:56
> kasan_record_aux_stack+0xbd/0xd0 mm/kasan/generic.c:559
> __call_rcu_common kernel/rcu/tree.c:3123 [inline]
> call_rcu+0x157/0x9c0 kernel/rcu/tree.c:3243
> gfs2_quota_sync+0x3c4/0x460 fs/gfs2/quota.c:1361
> gfs2_sync_fs+0x4c/0xb0 fs/gfs2/super.c:658
> sync_filesystem+0xee/0x230 fs/sync.c:56
> generic_shutdown_super+0x6f/0x2c0 fs/super.c:621
> kill_block_super+0x44/0x90 fs/super.c:1729
> deactivate_locked_super+0xbc/0x130 fs/super.c:473
> cleanup_mnt+0x425/0x4c0 fs/namespace.c:1318
> task_work_run+0x1d4/0x260 kernel/task_work.c:227
> exit_task_work include/linux/task_work.h:40 [inline]
> do_exit+0x6b5/0x2300 kernel/exit.c:966
> do_group_exit+0x21c/0x2d0 kernel/exit.c:1107
> __do_sys_exit_group kernel/exit.c:1118 [inline]
> __se_sys_exit_group kernel/exit.c:1116 [inline]
> __x64_sys_exit_group+0x3f/0x40 kernel/exit.c:1116
> x64_sys_call+0x21f7/0x2200 arch/x86/include/generated/asm/syscalls_64.h:232
> do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]
> do_syscall_64+0xfa/0xfa0 arch/x86/entry/syscall_64.c:94
> entry_SYSCALL_64_after_hwframe+0x77/0x7f
>
> The buggy address belongs to the object at ffff88800098a000
> which belongs to the cache gfs2_quotad of size 272
> The buggy address is located 128 bytes inside of
> freed 272-byte region [ffff88800098a000, ffff88800098a110)
>
> The buggy address belongs to the physical page:
> page: refcount:0 mapcount:0 mapping:0000000000000000 index:0x0 pfn:0x98a
> flags: 0x7ff00000000000(node=0|zone=0|lastcpupid=0x7ff)
> page_type: f5(slab)
> raw: 007ff00000000000 ffff888032687dc0 dead000000000122 0000000000000000
> raw: 0000000000000000 00000000800c000c 00000000f5000000 0000000000000000
> page dumped because: kasan: bad access detected
> page_owner tracks the page as allocated
> page last allocated via order 0, migratetype Reclaimable, gfp_mask 0x52c50(GFP_NOFS|__GFP_RECLAIMABLE|__GFP_NOWARN|__GFP_NORETRY|__GFP_COMP), pid 5483, tgid 5483 (syz.0.17), ts 105510017652, free_ts 102275632308
> set_page_owner include/linux/page_owner.h:32 [inline]
> post_alloc_hook+0x234/0x290 mm/page_alloc.c:1845
> prep_new_page mm/page_alloc.c:1853 [inline]
> get_page_from_freelist+0x2365/0x2440 mm/page_alloc.c:3879
> __alloc_frozen_pages_noprof+0x181/0x370 mm/page_alloc.c:5178
> alloc_pages_mpol+0x232/0x4a0 mm/mempolicy.c:2416
> alloc_slab_page mm/slub.c:3059 [inline]
> allocate_slab+0x96/0x350 mm/slub.c:3232
> new_slab mm/slub.c:3286 [inline]
> ___slab_alloc+0xf56/0x1990 mm/slub.c:4655
> __slab_alloc+0x65/0x100 mm/slub.c:4778
> __slab_alloc_node mm/slub.c:4854 [inline]
> slab_alloc_node mm/slub.c:5276 [inline]
> kmem_cache_alloc_noprof+0x3f9/0x6e0 mm/slub.c:5295
> qd_alloc+0x50/0x250 fs/gfs2/quota.c:234
> gfs2_quota_init+0x762/0x1200 fs/gfs2/quota.c:1448
> gfs2_make_fs_rw+0x181/0x2b0 fs/gfs2/super.c:149
> gfs2_fill_super+0x1a7b/0x20d0 fs/gfs2/ops_fstype.c:1280
> get_tree_bdev_flags+0x40e/0x4d0 fs/super.c:1698
> gfs2_get_tree+0x51/0x1e0 fs/gfs2/ops_fstype.c:1337
> vfs_get_tree+0x92/0x2b0 fs/super.c:1758
> fc_mount fs/namespace.c:1199 [inline]
> do_new_mount_fc fs/namespace.c:3642 [inline]
> do_new_mount+0x302/0xa10 fs/namespace.c:3718
> page last free pid 5433 tgid 5433 stack trace:
> reset_page_owner include/linux/page_owner.h:25 [inline]
> free_pages_prepare mm/page_alloc.c:1394 [inline]
> free_unref_folios+0xdb3/0x14f0 mm/page_alloc.c:2958
> folios_put_refs+0x584/0x670 mm/swap.c:1002
> free_pages_and_swap_cache+0x4be/0x520 mm/swap_state.c:358
> __tlb_batch_free_encoded_pages mm/mmu_gather.c:136 [inline]
> tlb_batch_pages_flush mm/mmu_gather.c:149 [inline]
> tlb_flush_mmu_free mm/mmu_gather.c:397 [inline]
> tlb_flush_mmu+0x3a0/0x680 mm/mmu_gather.c:404
> tlb_finish_mmu+0xc3/0x1d0 mm/mmu_gather.c:497
> exit_mmap+0x444/0xb40 mm/mmap.c:1293
> __mmput+0x118/0x430 kernel/fork.c:1133
> exit_mm+0x1da/0x2c0 kernel/exit.c:582
> do_exit+0x648/0x2300 kernel/exit.c:954
> do_group_exit+0x21c/0x2d0 kernel/exit.c:1107
> __do_sys_exit_group kernel/exit.c:1118 [inline]
> __se_sys_exit_group kernel/exit.c:1116 [inline]
> __x64_sys_exit_group+0x3f/0x40 kernel/exit.c:1116
> x64_sys_call+0x21f7/0x2200 arch/x86/include/generated/asm/syscalls_64.h:232
> do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]
> do_syscall_64+0xfa/0xfa0 arch/x86/entry/syscall_64.c:94
> entry_SYSCALL_64_after_hwframe+0x77/0x7f
>
> Memory state around the buggy address:
> ffff888000989f80: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
> ffff88800098a000: fa fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
> >ffff88800098a080: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
> ^
> ffff88800098a100: fb fb fc fc fc fc fc fc fc fc 00 00 00 00 00 00
> ffff88800098a180: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> ==================================================================
>
>
> ---
> If you want syzbot to run the reproducer, reply with:
> #syz test: git://repo/address.git branch-or-commit-hash
> If you attach or paste a git patch, syzbot will apply it before testing.
Powered by blists - more mailing lists