syzbot


KASAN: invalid-access Read in kvm_vgic_set_owner

Status: upstream: reported on 2025/05/12 16:46
Subsystems: kvmarm
[Documentation on labels]
Reported-by: syzbot+9993ad918a0b1c0af91c@syzkaller.appspotmail.com
First crash: 18h36m, last: 18h36m
Discussions (1)
Title Replies (including bot) Last reply
[syzbot] [kvmarm?] KASAN: invalid-access Read in kvm_vgic_set_owner 0 (1) 2025/05/12 16:46

Sample crash report:
==================================================================
BUG: KASAN: invalid-access in __raw_spin_lock_irqsave include/linux/spinlock_api_smp.h:110 [inline]
BUG: KASAN: invalid-access in _raw_spin_lock_irqsave+0x5c/0x7c kernel/locking/spinlock.c:162
Read of size 1 at addr 00000000000013c8 by task syz.0.1041/7144

CPU: 0 UID: 0 PID: 7144 Comm: syz.0.1041 Not tainted 6.15.0-rc4-syzkaller-gc4e91ea0cc7e #0 PREEMPT 
Hardware name: linux,dummy-virt (DT)
Call trace:
 show_stack+0x2c/0x3c arch/arm64/kernel/stacktrace.c:466 (C)
 __dump_stack+0x30/0x40 lib/dump_stack.c:94
 dump_stack_lvl+0xd8/0x12c lib/dump_stack.c:120
 print_report+0x5c/0xa0 mm/kasan/report.c:524
 kasan_report+0xb0/0x110 mm/kasan/report.c:634
 __kasan_check_byte+0x3c/0x54 mm/kasan/common.c:557
 kasan_check_byte include/linux/kasan.h:399 [inline]
 lock_acquire+0xb0/0x2e0 kernel/locking/lockdep.c:5840
 __raw_spin_lock_irqsave include/linux/spinlock_api_smp.h:110 [inline]
 _raw_spin_lock_irqsave+0x5c/0x7c kernel/locking/spinlock.c:162
 kvm_vgic_set_owner+0x18c/0x294 arch/arm64/kvm/vgic/vgic.c:611
 timer_irqs_are_valid arch/arm64/kvm/arch_timer.c:1573 [inline]
 kvm_timer_enable+0x1c4/0x794 arch/arm64/kvm/arch_timer.c:1631
 kvm_arch_vcpu_run_pid_change+0x1f0/0x458 arch/arm64/kvm/arm.c:857
 kvm_vcpu_ioctl+0xae8/0xc24 virt/kvm/kvm_main.c:4381
 vfs_ioctl fs/ioctl.c:51 [inline]
 __do_sys_ioctl fs/ioctl.c:906 [inline]
 __se_sys_ioctl fs/ioctl.c:892 [inline]
 __arm64_sys_ioctl+0x18c/0x244 fs/ioctl.c:892
 __invoke_syscall arch/arm64/kernel/syscall.c:35 [inline]
 invoke_syscall+0x90/0x2b4 arch/arm64/kernel/syscall.c:49
 el0_svc_common+0x180/0x2f4 arch/arm64/kernel/syscall.c:132
 do_el0_svc+0x58/0x74 arch/arm64/kernel/syscall.c:151
 el0_svc+0x58/0x134 arch/arm64/kernel/entry-common.c:744
 el0t_64_sync_handler+0x78/0x108 arch/arm64/kernel/entry-common.c:762
 el0t_64_sync+0x198/0x19c arch/arm64/kernel/entry.S:600
==================================================================
Unable to handle kernel paging request at virtual address ffef80000000013b
KASAN: maybe wild-memory-access in range [0xff000000000013b0-0xff000000000013bf]
Mem abort info:
  ESR = 0x0000000096000004
  EC = 0x25: DABT (current EL), IL = 32 bits
  SET = 0, FnV = 0
  EA = 0, S1PTW = 0
  FSC = 0x04: level 0 translation fault
Data abort info:
  ISV = 0, ISS = 0x00000004, ISS2 = 0x00000000
  CM = 0, WnR = 0, TnD = 0, TagAccess = 0
  GCS = 0, Overlay = 0, DirtyBit = 0, Xs = 0
[ffef80000000013b] address between user and kernel address ranges
Internal error: Oops: 0000000096000004 [#1]  SMP
Modules linked in:
CPU: 0 UID: 0 PID: 7144 Comm: syz.0.1041 Tainted: G    B               6.15.0-rc4-syzkaller-gc4e91ea0cc7e #0 PREEMPT 
Tainted: [B]=BAD_PAGE
Hardware name: linux,dummy-virt (DT)
pstate: 604020c9 (nZCv daIF +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
pc : debug_spin_lock_before kernel/locking/spinlock_debug.c:86 [inline]
pc : do_raw_spin_lock+0x4c/0x2b4 kernel/locking/spinlock_debug.c:115
lr : __raw_spin_lock_irqsave include/linux/spinlock_api_smp.h:111 [inline]
lr : _raw_spin_lock_irqsave+0x64/0x7c kernel/locking/spinlock.c:162
sp : ffff8000a8ef7930
x29: ffff8000a8ef7940 x28: ddf00000139057c0 x27: ddf0000013906c30
x26: 0000000000000001 x25: ddf0000013906e10 x24: 0000000000000010
x23: a3ff8000a91ee000 x22: ddf00000139057c0 x21: ffff8000801fd8a4
x20: 00000000000013b0 x19: efff800000000000 x18: 00000000000000ff
x17: 000000000000001f x16: 00000000000000fe x15: 0000000000000000
x14: 0000000000000000 x13: 00000000ffffffff x12: 0000000000000002
x11: 0000000000000001 x10: 0ff000000000013b x9 : 0000000000000000
x8 : 00000000000013b4 x7 : ffff8000870a9afd x6 : ffff800086582ed8
x5 : 0000000000000000 x4 : 0000000000000000 x3 : ffff8000802a42dc
x2 : 0000000000000001 x1 : 0000000000000000 x0 : 00000000000013b0
Call trace:
 debug_spin_lock_before kernel/locking/spinlock_debug.c:86 [inline] (P)
 do_raw_spin_lock+0x4c/0x2b4 kernel/locking/spinlock_debug.c:115 (P)
 __raw_spin_lock_irqsave include/linux/spinlock_api_smp.h:111 [inline]
 _raw_spin_lock_irqsave+0x64/0x7c kernel/locking/spinlock.c:162
 kvm_vgic_set_owner+0x18c/0x294 arch/arm64/kvm/vgic/vgic.c:611
 timer_irqs_are_valid arch/arm64/kvm/arch_timer.c:1573 [inline]
 kvm_timer_enable+0x1c4/0x794 arch/arm64/kvm/arch_timer.c:1631
 kvm_arch_vcpu_run_pid_change+0x1f0/0x458 arch/arm64/kvm/arm.c:857
 kvm_vcpu_ioctl+0xae8/0xc24 virt/kvm/kvm_main.c:4381
 vfs_ioctl fs/ioctl.c:51 [inline]
 __do_sys_ioctl fs/ioctl.c:906 [inline]
 __se_sys_ioctl fs/ioctl.c:892 [inline]
 __arm64_sys_ioctl+0x18c/0x244 fs/ioctl.c:892
 __invoke_syscall arch/arm64/kernel/syscall.c:35 [inline]
 invoke_syscall+0x90/0x2b4 arch/arm64/kernel/syscall.c:49
 el0_svc_common+0x180/0x2f4 arch/arm64/kernel/syscall.c:132
 do_el0_svc+0x58/0x74 arch/arm64/kernel/syscall.c:151
 el0_svc+0x58/0x134 arch/arm64/kernel/entry-common.c:744
 el0t_64_sync_handler+0x78/0x108 arch/arm64/kernel/entry-common.c:762
 el0t_64_sync+0x198/0x19c arch/arm64/kernel/entry.S:600
Code: d344fd4a aa0003f4 f90007e9 d378fd09 (386a6a6a) 
---[ end trace 0000000000000000 ]---
----------------
Code disassembly (best guess):
   0:	d344fd4a 	lsr	x10, x10, #4
   4:	aa0003f4 	mov	x20, x0
   8:	f90007e9 	str	x9, [sp, #8]
   c:	d378fd09 	lsr	x9, x8, #56
* 10:	386a6a6a 	ldrb	w10, [x19, x10] <-- trapping instruction

Crashes (1):
Time Kernel Commit Syzkaller Config Log Report Syz repro C repro VM info Assets (help?) Manager Title
2025/05/12 04:44 git://git.kernel.org/pub/scm/linux/kernel/git/kvmarm/kvmarm.git next c4e91ea0cc7e 77908e5f .config console log report info [disk image (non-bootable)] [vmlinux] [kernel image] ci-qemu-native-arm64-kvm KASAN: invalid-access Read in kvm_vgic_set_owner
* Struck through repros no longer work on HEAD.