[syzbot] [kvmarm?] kernel BUG in kvm_s2_put_page

2 views
Skip to first unread message

syzbot

unread,
Sep 19, 2025, 10:20:39 AMSep 19
to catalin...@arm.com, joey....@arm.com, kvm...@lists.linux.dev, linux-ar...@lists.infradead.org, linux-...@vger.kernel.org, m...@kernel.org, oliver...@linux.dev, suzuki....@arm.com, syzkall...@googlegroups.com, wi...@kernel.org, yuze...@huawei.com
Hello,

syzbot found the following issue on:

HEAD commit: 62e68218ab58 Merge branch kvm-arm64/nv-debug into kvmarm-m..
git tree: git://git.kernel.org/pub/scm/linux/kernel/git/kvmarm/kvmarm.git next
console output: https://syzkaller.appspot.com/x/log.txt?x=1551cf62580000
kernel config: https://syzkaller.appspot.com/x/.config?x=1b1bafe30fc85201
dashboard link: https://syzkaller.appspot.com/bug?extid=c41f3ddb8299a30a98b5
compiler: Debian clang version 20.1.8 (++20250708123704+0de59a293f7a-1~exp1~20250708003721.134), Debian LLD 20.1.8
userspace arch: arm64

Unfortunately, I don't have any reproducer for this issue yet.

Downloadable assets:
disk image (non-bootable): https://storage.googleapis.com/syzbot-assets/fa3fbcfdac58/non_bootable_disk-62e68218.raw.xz
vmlinux: https://storage.googleapis.com/syzbot-assets/99c4e665c20d/vmlinux-62e68218.xz
kernel image: https://storage.googleapis.com/syzbot-assets/4204d63db4b5/Image-62e68218.gz.xz

IMPORTANT: if you fix the issue, please add the following tag to the commit:
Reported-by: syzbot+c41f3d...@syzkaller.appspotmail.com

raw: 01ffea8000000000 ffffc1ffc0807c48 ffffc1ffc080a888 0000000000000000
raw: 0000000000000000 0000000000000000 00000000ffffffff 0000000000000000
page dumped because: VM_BUG_ON_PAGE(page_ref_count(page) == 0)
------------[ cut here ]------------
kernel BUG at ./include/linux/mm.h:1036!
Internal error: Oops - BUG: 00000000f2000800 [#1] SMP
Modules linked in:
CPU: 0 UID: 0 PID: 4079 Comm: syz.1.200 Not tainted syzkaller #0 PREEMPT
Hardware name: linux,dummy-virt (DT)
pstate: 60402009 (nZCv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
pc : put_page_testzero include/linux/mm.h:1036 [inline]
pc : folio_put_testzero include/linux/mm.h:1042 [inline]
pc : folio_put include/linux/mm.h:1359 [inline]
pc : put_page include/linux/mm.h:1429 [inline]
pc : kvm_s2_put_page+0x374/0x3a0 arch/arm64/kvm/mmu.c:264
lr : put_page_testzero include/linux/mm.h:1036 [inline]
lr : folio_put_testzero include/linux/mm.h:1042 [inline]
lr : folio_put include/linux/mm.h:1359 [inline]
lr : put_page include/linux/mm.h:1429 [inline]
lr : kvm_s2_put_page+0x374/0x3a0 arch/arm64/kvm/mmu.c:264
sp : ffff80008edd7570
x29: ffff80008edd7570 x28: a4f00000202a2000 x27: a4f00000202a2000
x26: 00000000000000ff x25: ffff80008734e000 x24: ffffc1ffc0000000
x23: ffffc1ffc0806908 x22: 0000000000000000 x21: ffffc1ffc0806934
x20: 0000000000000000 x19: ffffc1ffc0806900 x18: 000000004afc0585
x17: 0000000004687c8c x16: 000000004af050f5 x15: 0000000089957307
x14: ffffffffffffffff x13: fff0000012103b08 x12: 0000000000000001
x11: 0000000000080000 x10: 0000000000031ed7 x9 : c866620449182600
x8 : c866620449182600 x7 : ffff80008039fbc8 x6 : 0000000000000000
x5 : 0000000000000001 x4 : 0000000000000001 x3 : ffff800080390dd0
x2 : 0000000000000002 x1 : 0000000100000000 x0 : 000000000000003e
Call trace:
put_page_testzero include/linux/mm.h:1036 [inline] (P)
folio_put_testzero include/linux/mm.h:1042 [inline] (P)
folio_put include/linux/mm.h:1359 [inline] (P)
put_page include/linux/mm.h:1429 [inline] (P)
kvm_s2_put_page+0x374/0x3a0 arch/arm64/kvm/mmu.c:264 (P)
stage2_free_walker+0x1b0/0x264 arch/arm64/kvm/hyp/pgtable.c:1549
kvm_pgtable_visitor_cb arch/arm64/kvm/hyp/pgtable.c:130 [inline]
__kvm_pgtable_visit arch/arm64/kvm/hyp/pgtable.c:212 [inline]
__kvm_pgtable_walk+0x7d8/0xa68 arch/arm64/kvm/hyp/pgtable.c:237
_kvm_pgtable_walk arch/arm64/kvm/hyp/pgtable.c:260 [inline]
kvm_pgtable_walk+0x294/0x468 arch/arm64/kvm/hyp/pgtable.c:283
kvm_pgtable_stage2_destroy_range+0x60/0xb4 arch/arm64/kvm/hyp/pgtable.c:1563
stage2_destroy_range arch/arm64/kvm/mmu.c:924 [inline]
kvm_stage2_destroy arch/arm64/kvm/mmu.c:935 [inline]
kvm_free_stage2_pgd+0x198/0x28c arch/arm64/kvm/mmu.c:1112
kvm_uninit_stage2_mmu+0x20/0x38 arch/arm64/kvm/mmu.c:1023
kvm_arch_flush_shadow_all+0x1a8/0x1e0 arch/arm64/kvm/nested.c:1113
kvm_flush_shadow_all virt/kvm/kvm_main.c:343 [inline]
kvm_mmu_notifier_release+0x48/0xa8 virt/kvm/kvm_main.c:884
mmu_notifier_unregister+0x128/0x42c mm/mmu_notifier.c:815
kvm_destroy_vm virt/kvm/kvm_main.c:1295 [inline]
kvm_put_kvm+0x6a0/0xfa8 virt/kvm/kvm_main.c:1353
kvm_vcpu_release+0x70/0x9c virt/kvm/kvm_main.c:4100
__fput+0x4ac/0x980 fs/file_table.c:468
____fput+0x20/0x58 fs/file_table.c:496
task_work_run+0x1bc/0x254 kernel/task_work.c:227
get_signal+0x13ec/0x1554 kernel/signal.c:2807
do_signal+0x23c/0x4dd0 arch/arm64/kernel/signal.c:1618
do_notify_resume+0xb0/0x270 arch/arm64/kernel/entry-common.c:152
exit_to_user_mode_prepare arch/arm64/kernel/entry-common.c:173 [inline]
exit_to_user_mode arch/arm64/kernel/entry-common.c:182 [inline]
el0_svc+0xb8/0x164 arch/arm64/kernel/entry-common.c:880
el0t_64_sync_handler+0x84/0x12c arch/arm64/kernel/entry-common.c:898
el0t_64_sync+0x198/0x19c arch/arm64/kernel/entry.S:596
Code: f00375a1 9112fc21 aa1303e0 97f9c9f2 (d4210000)
---[ end trace 0000000000000000 ]---


---
This report is generated by a bot. It may contain errors.
See https://goo.gl/tpsmEJ for more information about syzbot.
syzbot engineers can be reached at syzk...@googlegroups.com.

syzbot will keep track of this issue. See:
https://goo.gl/tpsmEJ#status for how to communicate with syzbot.

If the report is already addressed, let syzbot know by replying with:
#syz fix: exact-commit-title

If you want to overwrite report's subsystems, reply with:
#syz set subsystems: new-subsystem
(See the list of subsystem names on the web dashboard)

If the report is a duplicate of another one, reply with:
#syz dup: exact-subject-of-another-report

If you want to undo deduplication, reply with:
#syz undup

Marc Zyngier

unread,
Sep 19, 2025, 10:27:04 AMSep 19
to syzbot, catalin...@arm.com, joey....@arm.com, kvm...@lists.linux.dev, linux-ar...@lists.infradead.org, linux-...@vger.kernel.org, oliver...@linux.dev, suzuki....@arm.com, syzkall...@googlegroups.com, wi...@kernel.org, yuze...@huawei.com
This is likely caused by the S2 refcounting issue that has just been
reverted in Linus' tree, and that is not in the kvmarm/next branch.

M.

--
Jazz isn't dead. It just smells funny.

syzbot

unread,
Oct 29, 2025, 4:04:30 PMĀ (2 days ago)Ā Oct 29
to catalin...@arm.com, joey....@arm.com, kvm...@lists.linux.dev, linux-ar...@lists.infradead.org, linux-...@vger.kernel.org, m...@kernel.org, oliver...@linux.dev, suzuki....@arm.com, syzkall...@googlegroups.com, wi...@kernel.org, yuze...@huawei.com
syzbot has found a reproducer for the following issue on:

HEAD commit: 10fd0285305d Merge branch kvm-arm64/selftests-6.18 into kv..
console output: https://syzkaller.appspot.com/x/log.txt?x=173e4fe2580000
kernel config: https://syzkaller.appspot.com/x/.config?x=a4522b3a704e0394
dashboard link: https://syzkaller.appspot.com/bug?extid=c41f3ddb8299a30a98b5
compiler: Debian clang version 20.1.8 (++20250708123704+0de59a293f7a-1~exp1~20250708003721.134), Debian LLD 20.1.8
userspace arch: arm64
syz repro: https://syzkaller.appspot.com/x/repro.syz?x=13559c92580000
C reproducer: https://syzkaller.appspot.com/x/repro.c?x=12963fe2580000

Downloadable assets:
disk image (non-bootable): https://storage.googleapis.com/syzbot-assets/fa3fbcfdac58/non_bootable_disk-10fd0285.raw.xz
vmlinux: https://storage.googleapis.com/syzbot-assets/65e2ebd050e3/vmlinux-10fd0285.xz
kernel image: https://storage.googleapis.com/syzbot-assets/9d47fc3df12e/Image-10fd0285.gz.xz

IMPORTANT: if you fix the issue, please add the following tag to the commit:
Reported-by: syzbot+c41f3d...@syzkaller.appspotmail.com

raw: 01fff1c000000000 ffffc1ffc08742c8 ffffc1ffc07b2488 0000000000000000
raw: 0000000000000000 0000000000000000 00000000ffffffff 0000000000000000
page dumped because: VM_BUG_ON_PAGE(page_ref_count(page) == 0)
------------[ cut here ]------------
kernel BUG at ./include/linux/mm.h:1036!
Internal error: Oops - BUG: 00000000f2000800 [#1] SMP
Modules linked in:
CPU: 0 UID: 0 PID: 3630 Comm: syz.2.17 Not tainted syzkaller #0 PREEMPT
Hardware name: linux,dummy-virt (DT)
pstate: 61402009 (nZCv daif +PAN -UAO -TCO +DIT -SSBS BTYPE=--)
pc : put_page_testzero include/linux/mm.h:1036 [inline]
pc : folio_put_testzero include/linux/mm.h:1042 [inline]
pc : folio_put include/linux/mm.h:1359 [inline]
pc : put_page include/linux/mm.h:1429 [inline]
pc : kvm_s2_put_page+0x374/0x3a0 arch/arm64/kvm/mmu.c:264
lr : put_page_testzero include/linux/mm.h:1036 [inline]
lr : folio_put_testzero include/linux/mm.h:1042 [inline]
lr : folio_put include/linux/mm.h:1359 [inline]
lr : put_page include/linux/mm.h:1429 [inline]
lr : kvm_s2_put_page+0x374/0x3a0 arch/arm64/kvm/mmu.c:264
sp : ffff80008e717450
x29: ffff80008e717450 x28: bff000001ec92000 x27: bff000001ec92000
x26: 00000000000000ff x25: ffff800087396000 x24: ffffc1ffc0000000
x23: ffffc1ffc0874288 x22: 0000000000000000 x21: ffffc1ffc08742b4
x20: 0000000000000000 x19: ffffc1ffc0874280 x18: 00000000fb20c077
x17: 00000000057d7f34 x16: 00000000fb1a5197 x15: 00000000866b9677
x14: ffffffffffffffff x13: fff0000015a39d88 x12: 0000000000000001
x11: 0000000000000000 x10: 0000000000ff0100 x9 : a6a806ed1668b300
x8 : a6a806ed1668b300 x7 : ffff80008039fbc8 x6 : 0000000000000000
x5 : 0000000000000001 x4 : 0000000000000001 x3 : ffff80008074aff8
x2 : 0000000000000001 x1 : 0000000100000000 x0 : 000000000000003e
Call trace:
put_page_testzero include/linux/mm.h:1036 [inline] (P)
folio_put_testzero include/linux/mm.h:1042 [inline] (P)
folio_put include/linux/mm.h:1359 [inline] (P)
put_page include/linux/mm.h:1429 [inline] (P)
kvm_s2_put_page+0x374/0x3a0 arch/arm64/kvm/mmu.c:264 (P)
stage2_free_walker+0x1b0/0x264 arch/arm64/kvm/hyp/pgtable.c:1549
kvm_pgtable_visitor_cb arch/arm64/kvm/hyp/pgtable.c:130 [inline]
__kvm_pgtable_visit arch/arm64/kvm/hyp/pgtable.c:212 [inline]
__kvm_pgtable_walk+0x7d8/0xa68 arch/arm64/kvm/hyp/pgtable.c:237
_kvm_pgtable_walk arch/arm64/kvm/hyp/pgtable.c:260 [inline]
kvm_pgtable_walk+0x294/0x468 arch/arm64/kvm/hyp/pgtable.c:283
kvm_pgtable_stage2_destroy_range+0x60/0xb4 arch/arm64/kvm/hyp/pgtable.c:1563
stage2_destroy_range arch/arm64/kvm/mmu.c:924 [inline]
kvm_stage2_destroy arch/arm64/kvm/mmu.c:935 [inline]
kvm_free_stage2_pgd+0x198/0x28c arch/arm64/kvm/mmu.c:1112
kvm_uninit_stage2_mmu+0x20/0x38 arch/arm64/kvm/mmu.c:1023
kvm_arch_flush_shadow_all+0x1a8/0x1e0 arch/arm64/kvm/nested.c:1113
kvm_flush_shadow_all virt/kvm/kvm_main.c:343 [inline]
kvm_mmu_notifier_release+0x48/0xa8 virt/kvm/kvm_main.c:884
mn_hlist_release mm/mmu_notifier.c:321 [inline]
__mmu_notifier_release+0x310/0x614 mm/mmu_notifier.c:359
mmu_notifier_release include/linux/mmu_notifier.h:402 [inline]
exit_mmap+0xb8/0xbb8 mm/mmap.c:1263
__mmput+0x10c/0x528 kernel/fork.c:1130
mmput+0x70/0xac kernel/fork.c:1152
exit_mm+0x158/0x258 kernel/exit.c:582
do_exit+0x788/0x2378 kernel/exit.c:949
do_group_exit+0x1d4/0x2ac kernel/exit.c:1102
get_signal+0x1440/0x1554 kernel/signal.c:3034
do_signal+0x23c/0x4dd0 arch/arm64/kernel/signal.c:1618
do_notify_resume+0xb0/0x270 arch/arm64/kernel/entry-common.c:152
exit_to_user_mode_prepare arch/arm64/kernel/entry-common.c:173 [inline]
exit_to_user_mode arch/arm64/kernel/entry-common.c:182 [inline]
el0_svc+0xb8/0x164 arch/arm64/kernel/entry-common.c:880
el0t_64_sync_handler+0x84/0x12c arch/arm64/kernel/entry-common.c:898
el0t_64_sync+0x198/0x19c arch/arm64/kernel/entry.S:596
Code: 900377c1 910e9421 aa1303e0 97f9c9f2 (d4210000)
---[ end trace 0000000000000000 ]---


---
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.

Oliver Upton

unread,
Oct 29, 2025, 4:27:47 PMĀ (2 days ago)Ā Oct 29
to syzbot, catalin...@arm.com, joey....@arm.com, kvm...@lists.linux.dev, linux-ar...@lists.infradead.org, linux-...@vger.kernel.org, m...@kernel.org, suzuki....@arm.com, syzkall...@googlegroups.com, wi...@kernel.org, yuze...@huawei.com
On Wed, Oct 29, 2025 at 01:04:27PM -0700, syzbot wrote:
> syzbot has found a reproducer for the following issue on:
>
> HEAD commit: 10fd0285305d Merge branch kvm-arm64/selftests-6.18 into kv..
> git tree: git://git.kernel.org/pub/scm/linux/kernel/git/kvmarm/kvmarm.git next
> console output: https://syzkaller.appspot.com/x/log.txt?x=173e4fe2580000
> kernel config: https://syzkaller.appspot.com/x/.config?x=a4522b3a704e0394
> dashboard link: https://syzkaller.appspot.com/bug?extid=c41f3ddb8299a30a98b5
> compiler: Debian clang version 20.1.8 (++20250708123704+0de59a293f7a-1~exp1~20250708003721.134), Debian LLD 20.1.8
> userspace arch: arm64
> syz repro: https://syzkaller.appspot.com/x/repro.syz?x=13559c92580000
> C reproducer: https://syzkaller.appspot.com/x/repro.c?x=12963fe2580000
>
> Downloadable assets:
> disk image (non-bootable): https://storage.googleapis.com/syzbot-assets/fa3fbcfdac58/non_bootable_disk-10fd0285.raw.xz
> vmlinux: https://storage.googleapis.com/syzbot-assets/65e2ebd050e3/vmlinux-10fd0285.xz
> kernel image: https://storage.googleapis.com/syzbot-assets/9d47fc3df12e/Image-10fd0285.gz.xz
>
> IMPORTANT: if you fix the issue, please add the following tag to the commit:
> Reported-by: syzbot+c41f3d...@syzkaller.appspotmail.com

#syz fix: Revert "KVM: arm64: Reschedule as needed when destroying the stage-2 page-tables"

Just fast-forwarded kvmarm/next to 6.18-rc3 which has the fix.

Thanks,
Oliver
Reply all
Reply to author
Forward
0 new messages