syzbot


KASAN: use-after-free Read in ntfs_iget5

Status: upstream: reported on 2023/03/15 13:32
Reported-by: syzbot+8b38fd4f1a3f42833804@syzkaller.appspotmail.com
First crash: 200d, last: 8d07h
Similar bugs (2)
Kernel Title Repro Cause bisect Fix bisect Count Last Reported Patched Status
linux-5.15 KASAN: use-after-free Read in ntfs_iget5 5 20d 161d 0/3 upstream: reported on 2023/04/23 10:28
upstream KASAN: slab-out-of-bounds Read in ntfs_iget5 ntfs3 C done 3606 2d10h 527d 0/25 upstream: reported C repro on 2022/04/22 13:07

Sample crash report:
ntfs3: loop1: Different NTFS' sector size (4096) and media sector size (512)
==================================================================
BUG: KASAN: use-after-free in ntfs_iget5+0x120/0x2bd4 fs/ntfs3/inode.c:525
Read of size 8 at addr ffff0000df4c0ca0 by task syz-executor.1/9707

CPU: 1 PID: 9707 Comm: syz-executor.1 Not tainted 6.1.55-syzkaller #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 08/04/2023
Call trace:
 dump_backtrace+0x1c8/0x1f4 arch/arm64/kernel/stacktrace.c:158
 show_stack+0x2c/0x3c arch/arm64/kernel/stacktrace.c:165
 __dump_stack lib/dump_stack.c:88 [inline]
 dump_stack_lvl+0x108/0x170 lib/dump_stack.c:106
 print_address_description mm/kasan/report.c:284 [inline]
 print_report+0x174/0x4c0 mm/kasan/report.c:395
 kasan_report+0xd4/0x130 mm/kasan/report.c:495
 __asan_report_load8_noabort+0x2c/0x38 mm/kasan/report_generic.c:351
 ntfs_iget5+0x120/0x2bd4 fs/ntfs3/inode.c:525
 ntfs_fill_super+0x1e38/0x3a04 fs/ntfs3/super.c:1009
 get_tree_bdev+0x360/0x54c fs/super.c:1355
 ntfs_fs_get_tree+0x28/0x38 fs/ntfs3/super.c:1359
 vfs_get_tree+0x90/0x274 fs/super.c:1562
 do_new_mount+0x25c/0x8c4 fs/namespace.c:3040
 path_mount+0x590/0xe58 fs/namespace.c:3370
 do_mount fs/namespace.c:3383 [inline]
 __do_sys_mount fs/namespace.c:3591 [inline]
 __se_sys_mount fs/namespace.c:3568 [inline]
 __arm64_sys_mount+0x45c/0x594 fs/namespace.c:3568
 __invoke_syscall arch/arm64/kernel/syscall.c:38 [inline]
 invoke_syscall+0x98/0x2c0 arch/arm64/kernel/syscall.c:52
 el0_svc_common+0x138/0x258 arch/arm64/kernel/syscall.c:142
 do_el0_svc+0x64/0x218 arch/arm64/kernel/syscall.c:206
 el0_svc+0x58/0x168 arch/arm64/kernel/entry-common.c:637
 el0t_64_sync_handler+0x84/0xf0 arch/arm64/kernel/entry-common.c:655
 el0t_64_sync+0x18c/0x190 arch/arm64/kernel/entry.S:581

Allocated by task 5556:
 kasan_save_stack mm/kasan/common.c:45 [inline]
 kasan_set_track+0x4c/0x80 mm/kasan/common.c:52
 kasan_save_alloc_info+0x24/0x30 mm/kasan/generic.c:505
 __kasan_slab_alloc+0x74/0x8c mm/kasan/common.c:328
 kasan_slab_alloc include/linux/kasan.h:201 [inline]
 slab_post_alloc_hook+0x74/0x458 mm/slab.h:737
 slab_alloc_node mm/slub.c:3398 [inline]
 slab_alloc mm/slub.c:3406 [inline]
 __kmem_cache_alloc_lru mm/slub.c:3413 [inline]
 kmem_cache_alloc_lru+0x1ac/0x2f8 mm/slub.c:3429
 alloc_inode_sb include/linux/fs.h:3133 [inline]
 reiserfs_alloc_inode+0x2c/0xc4 fs/reiserfs/super.c:642
 alloc_inode fs/inode.c:259 [inline]
 iget5_locked+0xa4/0x234 fs/inode.c:1283
 reiserfs_fill_super+0x1088/0x2028 fs/reiserfs/super.c:2053
 mount_bdev+0x274/0x370 fs/super.c:1432
 get_super_block+0x44/0x58 fs/reiserfs/super.c:2601
 legacy_get_tree+0xd4/0x16c fs/fs_context.c:632
 vfs_get_tree+0x90/0x274 fs/super.c:1562
 do_new_mount+0x25c/0x8c4 fs/namespace.c:3040
 path_mount+0x590/0xe58 fs/namespace.c:3370
 do_mount fs/namespace.c:3383 [inline]
 __do_sys_mount fs/namespace.c:3591 [inline]
 __se_sys_mount fs/namespace.c:3568 [inline]
 __arm64_sys_mount+0x45c/0x594 fs/namespace.c:3568
 __invoke_syscall arch/arm64/kernel/syscall.c:38 [inline]
 invoke_syscall+0x98/0x2c0 arch/arm64/kernel/syscall.c:52
 el0_svc_common+0x138/0x258 arch/arm64/kernel/syscall.c:142
 do_el0_svc+0x64/0x218 arch/arm64/kernel/syscall.c:206
 el0_svc+0x58/0x168 arch/arm64/kernel/entry-common.c:637
 el0t_64_sync_handler+0x84/0xf0 arch/arm64/kernel/entry-common.c:655
 el0t_64_sync+0x18c/0x190 arch/arm64/kernel/entry.S:581

Last potentially related work creation:
 kasan_save_stack+0x40/0x70 mm/kasan/common.c:45
 __kasan_record_aux_stack+0xcc/0xe8 mm/kasan/generic.c:486
 kasan_record_aux_stack_noalloc+0x14/0x20 mm/kasan/generic.c:496
 call_rcu+0xfc/0xa40 kernel/rcu/tree.c:2799
 destroy_inode fs/inode.c:314 [inline]
 evict+0x5fc/0x68c fs/inode.c:679
 dispose_list fs/inode.c:697 [inline]
 evict_inodes+0x6b4/0x74c fs/inode.c:747
 generic_shutdown_super+0x9c/0x328 fs/super.c:480
 kill_block_super+0x70/0xdc fs/super.c:1459
 reiserfs_kill_sb+0x134/0x14c fs/reiserfs/super.c:570
 deactivate_locked_super+0xac/0x124 fs/super.c:332
 deactivate_super+0xf0/0x110 fs/super.c:363
 cleanup_mnt+0x394/0x41c fs/namespace.c:1186
 __cleanup_mnt+0x20/0x30 fs/namespace.c:1193
 task_work_run+0x240/0x2f0 kernel/task_work.c:179
 resume_user_mode_work include/linux/resume_user_mode.h:49 [inline]
 do_notify_resume+0x2144/0x3470 arch/arm64/kernel/signal.c:1132
 prepare_exit_to_user_mode arch/arm64/kernel/entry-common.c:137 [inline]
 exit_to_user_mode arch/arm64/kernel/entry-common.c:142 [inline]
 el0_svc+0x9c/0x168 arch/arm64/kernel/entry-common.c:638
 el0t_64_sync_handler+0x84/0xf0 arch/arm64/kernel/entry-common.c:655
 el0t_64_sync+0x18c/0x190 arch/arm64/kernel/entry.S:581

The buggy address belongs to the object at ffff0000df4c06a0
 which belongs to the cache reiser_inode_cache of size 1568
The buggy address is located 1536 bytes inside of
 1568-byte region [ffff0000df4c06a0, ffff0000df4c0cc0)

The buggy address belongs to the physical page:
page:00000000addae77f refcount:1 mapcount:0 mapping:0000000000000000 index:0xffff0000df4c06a0 pfn:0x11f4c0
head:00000000addae77f order:3 compound_mapcount:0 compound_pincount:0
memcg:ffff0000d06dd801
flags: 0x5ffc00000010200(slab|head|node=0|zone=2|lastcpupid=0x7ff)
raw: 05ffc00000010200 0000000000000000 dead000000000122 ffff0000c4148780
raw: ffff0000df4c06a0 0000000080130012 00000001ffffffff ffff0000d06dd801
page dumped because: kasan: bad access detected

Memory state around the buggy address:
 ffff0000df4c0b80: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
 ffff0000df4c0c00: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
>ffff0000df4c0c80: fb fb fb fb fb fb fb fb fc fc fc fc fc fc fc fc
                               ^
 ffff0000df4c0d00: fc fc fc fc fc fc fc fc 00 00 00 00 00 00 00 00
 ffff0000df4c0d80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
==================================================================
Unable to handle kernel paging request at virtual address dfff800000000002
KASAN: null-ptr-deref in range [0x0000000000000010-0x0000000000000017]
Mem abort info:
  ESR = 0x0000000096000006
  EC = 0x25: DABT (current EL), IL = 32 bits
  SET = 0, FnV = 0
  EA = 0, S1PTW = 0
  FSC = 0x06: level 2 translation fault
Data abort info:
  ISV = 0, ISS = 0x00000006
  CM = 0, WnR = 0
[dfff800000000002] address between user and kernel address ranges
Internal error: Oops: 0000000096000006 [#1] PREEMPT SMP
Modules linked in:
CPU: 0 PID: 9707 Comm: syz-executor.1 Tainted: G    B              6.1.55-syzkaller #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 08/04/2023
pstate: 80400005 (Nzcv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
pc : ntfs_iget5+0x12c/0x2bd4 fs/ntfs3/inode.c:525
lr : ntfs_iget5+0x120/0x2bd4 fs/ntfs3/inode.c:525
sp : ffff8000212275a0
x29: ffff8000212277e0 x28: ffff00011c9f4000 x27: ffff80001257fda0
x26: dfff800000000000 x25: ffff8000212279b0 x24: ffff700004244ee8
x23: ffff0000e26eb5f0 x22: 0000000000000002 x21: ffff0000df4c0ed0
x20: 0000000000000010 x19: ffff800021227740 x18: 1fffe000368a9f76
x17: 0000000000000000 x16: ffff80001211ccf4 x15: 0000000000000000
x14: 0000000000000002 x13: 0000000000000001 x12: 0000000000040000
x11: 0000000000035d25 x10: ffff80002292d000 x9 : 0000000000000000
x8 : 0000000000000002 x7 : 0000000000000001 x6 : 0000000000000001
x5 : ffff800021226db8 x4 : ffff8000159929a0 x3 : ffff8000081aead0
x2 : 0000000000000001 x1 : 0000000000000000 x0 : 0000000000000001
Call trace:
 ntfs_iget5+0x12c/0x2bd4 fs/ntfs3/inode.c:525
 ntfs_fill_super+0x1e38/0x3a04 fs/ntfs3/super.c:1009
 get_tree_bdev+0x360/0x54c fs/super.c:1355
 ntfs_fs_get_tree+0x28/0x38 fs/ntfs3/super.c:1359
 vfs_get_tree+0x90/0x274 fs/super.c:1562
 do_new_mount+0x25c/0x8c4 fs/namespace.c:3040
 path_mount+0x590/0xe58 fs/namespace.c:3370
 do_mount fs/namespace.c:3383 [inline]
 __do_sys_mount fs/namespace.c:3591 [inline]
 __se_sys_mount fs/namespace.c:3568 [inline]
 __arm64_sys_mount+0x45c/0x594 fs/namespace.c:3568
 __invoke_syscall arch/arm64/kernel/syscall.c:38 [inline]
 invoke_syscall+0x98/0x2c0 arch/arm64/kernel/syscall.c:52
 el0_svc_common+0x138/0x258 arch/arm64/kernel/syscall.c:142
 do_el0_svc+0x64/0x218 arch/arm64/kernel/syscall.c:206
 el0_svc+0x58/0x168 arch/arm64/kernel/entry-common.c:637
 el0t_64_sync_handler+0x84/0xf0 arch/arm64/kernel/entry-common.c:655
 el0t_64_sync+0x18c/0x190 arch/arm64/kernel/entry.S:581
Code: 97cb28e4 f9400288 91004114 d343fe88 (38fa6908) 
---[ end trace 0000000000000000 ]---
----------------
Code disassembly (best guess):
   0:	97cb28e4 	bl	0xffffffffff2ca390
   4:	f9400288 	ldr	x8, [x20]
   8:	91004114 	add	x20, x8, #0x10
   c:	d343fe88 	lsr	x8, x20, #3
* 10:	38fa6908 	ldrsb	w8, [x8, x26] <-- trapping instruction

Crashes (5):
Time Kernel Commit Syzkaller Config Log Report Syz repro C repro VM info Assets (help?) Manager Title
2023/09/23 13:14 linux-6.1.y d23900f974e0 0b6a67ac .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan-arm64 KASAN: use-after-free Read in ntfs_iget5
2023/07/12 15:06 linux-6.1.y 61fd484b2cf6 979d5fe2 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan-arm64 KASAN: use-after-free Read in ntfs_iget5
2023/06/02 09:46 linux-6.1.y d2869ace6eeb a4ae4f42 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan-arm64 KASAN: use-after-free Read in ntfs_iget5
2023/03/15 13:31 linux-6.1.y 6449a0ba6843 18b58603 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan-arm64 KASAN: use-after-free Read in ntfs_iget5
2023/08/17 14:50 linux-6.1.y 6c44e13dc284 74b106b6 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan-arm64 BUG: unable to handle kernel paging request in ntfs_iget5
* Struck through repros no longer work on HEAD.