syzbot


KASAN: use-after-free Read in nilfs_set_link

Status: auto-obsoleted due to no activity on 2024/04/16 20:38
Subsystems: nilfs
[Documentation on labels]
Reported-by: syzbot+4936b06b07f365af31cc@syzkaller.appspotmail.com
First crash: 110d, last: 110d
Cause bisection: the issue happens on the oldest tested release (bisect log)
Crash: WARNING in account_page_dirtied (log)
Repro: C syz .config
  
Fix bisection: fixed by (bisect log) :
commit 6f861765464f43a71462d52026fbddfc858239a5
Author: Jan Kara <jack@suse.cz>
Date: Wed Nov 1 17:43:10 2023 +0000

  fs: Block writes to mounted block devices

  
Discussions (1)
Title Replies (including bot) Last reply
[syzbot] [nilfs?] KASAN: use-after-free Read in nilfs_set_link 2 (4) 2024/02/19 12:13
Last patch testing requests (2)
Created Duration User Patch Repo Result
2024/01/21 22:33 24m retest repro upstream OK log
2024/01/21 21:03 22m retest repro upstream OK log

Sample crash report:
==================================================================
BUG: KASAN: use-after-free in nilfs_set_link+0x41d/0x4e0 fs/nilfs2/dir.c:421
Read of size 2 at addr ffff88802f5f1008 by task syz-executor284/5167

CPU: 1 PID: 5167 Comm: syz-executor284 Not tainted 6.7.0-rc8-syzkaller-00177-g52b1853b080a #0
Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.2-debian-1.16.2-1 04/01/2014
Call Trace:
 <TASK>
 __dump_stack lib/dump_stack.c:88 [inline]
 dump_stack_lvl+0xd9/0x1b0 lib/dump_stack.c:106
 print_address_description mm/kasan/report.c:364 [inline]
 print_report+0xc4/0x620 mm/kasan/report.c:475
 kasan_report+0xda/0x110 mm/kasan/report.c:588
 nilfs_set_link+0x41d/0x4e0 fs/nilfs2/dir.c:421
 nilfs_rename+0x4b7/0x580 fs/nilfs2/namei.c:414
 vfs_rename+0x13e0/0x1c30 fs/namei.c:4844
 do_renameat2+0xc3c/0xdc0 fs/namei.c:4996
 __do_sys_rename fs/namei.c:5042 [inline]
 __se_sys_rename fs/namei.c:5040 [inline]
 __x64_sys_rename+0x81/0xa0 fs/namei.c:5040
 do_syscall_x64 arch/x86/entry/common.c:52 [inline]
 do_syscall_64+0x40/0x110 arch/x86/entry/common.c:83
 entry_SYSCALL_64_after_hwframe+0x63/0x6b
RIP: 0033:0x7f872e83da09
Code: 28 00 00 00 75 05 48 83 c4 28 c3 e8 41 1a 00 00 90 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 b8 ff ff ff f7 d8 64 89 01 48
RSP: 002b:00007ffddec67608 EFLAGS: 00000246 ORIG_RAX: 0000000000000052
RAX: ffffffffffffffda RBX: 00007ffddec676d0 RCX: 00007f872e83da09
RDX: 00007f872e83da09 RSI: 0000000020000040 RDI: 0000000020000180
RBP: 00007ffddec676d8 R08: 00007f872e87f0cc R09: 00007f872e87f0cc
R10: 0000000000000f69 R11: 0000000000000246 R12: 0000000000000000
R13: 00007f872e87f0e5 R14: 0000000000000001 R15: 0000000000000001
 </TASK>

The buggy address belongs to the physical page:
page:ffffea0000bd7c40 refcount:0 mapcount:0 mapping:0000000000000000 index:0x1 pfn:0x2f5f1
flags: 0xfff00000000000(node=0|zone=1|lastcpupid=0x7ff)
page_type: 0xffffffff()
raw: 00fff00000000000 ffffea0001ae2f08 ffffe8fefd701770 0000000000000000
raw: 0000000000000001 0000000000000000 00000000ffffffff 0000000000000000
page dumped because: kasan: bad access detected
page_owner tracks the page as freed
page last allocated via order 0, migratetype Movable, gfp_mask 0x140dca(GFP_HIGHUSER_MOVABLE|__GFP_COMP|__GFP_ZERO), pid 5157, tgid 5157 (sshd), ts 43507147971, free_ts 43528176065
 set_page_owner include/linux/page_owner.h:31 [inline]
 post_alloc_hook+0x2d0/0x350 mm/page_alloc.c:1537
 prep_new_page mm/page_alloc.c:1544 [inline]
 get_page_from_freelist+0xa25/0x36d0 mm/page_alloc.c:3312
 __alloc_pages+0x22e/0x2420 mm/page_alloc.c:4568
 alloc_pages_mpol+0x258/0x5f0 mm/mempolicy.c:2133
 vma_alloc_folio+0xad/0x220 mm/mempolicy.c:2172
 do_anonymous_page mm/memory.c:4172 [inline]
 do_pte_missing mm/memory.c:3729 [inline]
 handle_pte_fault mm/memory.c:5039 [inline]
 __handle_mm_fault+0xe07/0x3d70 mm/memory.c:5180
 handle_mm_fault+0x47a/0xa10 mm/memory.c:5345
 do_user_addr_fault+0x30b/0x1030 arch/x86/mm/fault.c:1364
 handle_page_fault arch/x86/mm/fault.c:1507 [inline]
 exc_page_fault+0x5d/0xc0 arch/x86/mm/fault.c:1563
 asm_exc_page_fault+0x26/0x30 arch/x86/include/asm/idtentry.h:570
page last free stack trace:
 reset_page_owner include/linux/page_owner.h:24 [inline]
 free_pages_prepare mm/page_alloc.c:1137 [inline]
 free_unref_page_prepare+0x4fa/0xaa0 mm/page_alloc.c:2347
 free_unref_page_list+0xe6/0xb40 mm/page_alloc.c:2533
 release_pages+0x32a/0x14f0 mm/swap.c:1042
 tlb_batch_pages_flush+0x9a/0x190 mm/mmu_gather.c:98
 tlb_flush_mmu_free mm/mmu_gather.c:293 [inline]
 tlb_flush_mmu mm/mmu_gather.c:300 [inline]
 tlb_finish_mmu+0x14b/0x6f0 mm/mmu_gather.c:392
 unmap_region.constprop.0+0x2e6/0x3b0 mm/mmap.c:2344
 do_vmi_align_munmap+0xde6/0x1600 mm/mmap.c:2660
 do_vmi_munmap+0x20e/0x450 mm/mmap.c:2728
 __vm_munmap+0x144/0x390 mm/mmap.c:3015
 __do_sys_munmap mm/mmap.c:3032 [inline]
 __se_sys_munmap mm/mmap.c:3029 [inline]
 __x64_sys_munmap+0x62/0x80 mm/mmap.c:3029
 do_syscall_x64 arch/x86/entry/common.c:52 [inline]
 do_syscall_64+0x40/0x110 arch/x86/entry/common.c:83
 entry_SYSCALL_64_after_hwframe+0x63/0x6b

Memory state around the buggy address:
 ffff88802f5f0f00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 ffff88802f5f0f80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>ffff88802f5f1000: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
                      ^
 ffff88802f5f1080: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
 ffff88802f5f1100: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
==================================================================

Crashes (3):
Time Kernel Commit Syzkaller Config Log Report Syz repro C repro VM info Assets (help?) Manager Title
2024/01/07 20:10 upstream 52b1853b080a d0304e9c .config console log report syz C [disk image (non-bootable)] [vmlinux] [kernel image] [mounted in repro] ci-qemu-upstream KASAN: use-after-free Read in nilfs_set_link
2024/01/07 20:37 upstream 52b1853b080a d0304e9c .config console log report syz C [disk image] [vmlinux] [kernel image] [mounted in repro] ci2-upstream-fs KASAN: out-of-bounds Read in nilfs_set_link
2024/01/07 19:59 upstream 52b1853b080a d0304e9c .config console log report info [disk image (non-bootable)] [vmlinux] [kernel image] ci-qemu-upstream KASAN: use-after-free Read in nilfs_set_link
* Struck through repros no longer work on HEAD.