Re: general protection fault in gfn_to_rmap

From: Dmitry Vyukov
Date: Tue Oct 31 2017 - 09:59:31 EST


On Tue, Oct 31, 2017 at 4:51 PM, syzbot
<bot+53e9b911da5806836ed78f23e2b8ead1c905b469@xxxxxxxxxxxxxxxxxxxxxxxxx>
wrote:
> Hello,
>
> syzkaller hit the following crash on
> 0b5477d9dabd96ded4c5ef7a5f08b00188fc1dec
> git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/master
> compiler: gcc (GCC) 7.1.1 20170620
> .config is attached
> Raw console output is attached.
>
> syzkaller reproducer is attached. See https://goo.gl/kgGztJ
> for information about syzkaller reproducers

For the provided repro crashes in native_write_cr4, which seems to be
a separate unrelated issue (reported today separately).

Here is another repro associated with this crash:
https://gist.githubusercontent.com/dvyukov/7bdbcdb30b084516e7c5785fa82db838/raw/98fe8a27f899d6d8ea9d1dd3092e6c917570e1b6/gistfile1.txt
I've just tried it on upstream
5f479447d983111c039f1d6d958553c1ad1b2ff1 (Oct 30);
"./syz-execprog -procs=8 -repeat repro.txt" it crashes as:

------------[ cut here ]------------
kernel BUG at arch/x86/kvm/mmu.c:1194!
invalid opcode: 0000 [#1] SMP KASAN
Modules linked in:
CPU: 1 PID: 3091 Comm: syz-executor Not tainted 4.14.0-rc7+ #13
kvm [3107]: vcpu0, guest rIP: 0x9111 Hyper-V uhandled wrmsr:
0x40000020 data 0xf0047
Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011
task: ffff880064f206c0 task.stack: ffff88005eb40000
RIP: 0010:pte_list_remove+0x3ae/0x3c0 arch/x86/kvm/mmu.c:1193
RSP: 0018:ffff88005eb469d8 EFLAGS: 00010282
RAX: 0000000000000028 RBX: ffff88006af40d80 RCX: 0000000000000000
RDX: 0000000000000028 RSI: 1ffff1000bd68cfb RDI: ffffed000bd68d2f
RBP: ffff88005eb46a18 R08: 0000000000000001 R09: 0000000000000000
R10: ffff88005eb46dc0 R11: 0000000000000000 R12: ffff8800687a0078
R13: 0000000000000000 R14: ffff88006a2c7910 R15: ffff88006a2c7938
FS: 0000000000000000(0000) GS:ffff88006ca80000(0000) knlGS:0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 0000000000000000 CR3: 0000000005a22003 CR4: 00000000001626e0
Call Trace:
rmap_remove arch/x86/kvm/mmu.c:1270 [inline]
drop_spte+0x15a/0x250 arch/x86/kvm/mmu.c:1352
mmu_page_zap_pte+0x224/0x340 arch/x86/kvm/mmu.c:2484
kvm_mmu_page_unlink_children arch/x86/kvm/mmu.c:2506 [inline]
kvm_mmu_prepare_zap_page+0x1c5/0x1310 arch/x86/kvm/mmu.c:2550
kvm_zap_obsolete_pages arch/x86/kvm/mmu.c:5330 [inline]
kvm_mmu_invalidate_zap_all_pages+0x4a0/0x680 arch/x86/kvm/mmu.c:5371
kvm_arch_flush_shadow_all+0x15/0x20 arch/x86/kvm/x86.c:8444
kvm_mmu_notifier_release+0x59/0x90
arch/x86/kvm/../../../virt/kvm/kvm_main.c:467
__mmu_notifier_release+0x1d5/0x690 mm/mmu_notifier.c:75
mmu_notifier_release include/linux/mmu_notifier.h:222 [inline]
exit_mmap+0x42d/0x530 mm/mmap.c:2981
__mmput kernel/fork.c:928 [inline]
mmput+0x223/0x6d0 kernel/fork.c:949
exit_mm kernel/exit.c:544 [inline]
do_exit+0x904/0x1ad0 kernel/exit.c:852
do_group_exit+0x149/0x400 kernel/exit.c:968
get_signal+0x73f/0x16d0 kernel/signal.c:2334
do_signal+0x94/0x1ee0 arch/x86/kernel/signal.c:808
exit_to_usermode_loop+0x214/0x310 arch/x86/entry/common.c:158
prepare_exit_to_usermode arch/x86/entry/common.c:197 [inline]
syscall_return_slowpath+0x42f/0x510 arch/x86/entry/common.c:266
kvm [3097]: vcpu0, guest rIP: 0x9111 Hyper-V uhandled wrmsr:
0x40000020 data 0xf0047
entry_SYSCALL_64_fastpath+0xbc/0xbe
RIP: 0033:0x447ad7
RSP: 002b:00007f4d993c2058 EFLAGS: 00000207 ORIG_RAX: 0000000000000010
RAX: 0000000000000000 RBX: 00007f4d993c27b0 RCX: 0000000000447ad7
RDX: 00007f4d993c27b0 RSI: 00000000c008ae05 RDI: 0000000000000018
RBP: 0000000000000000 R08: 0000000000000001 R09: 0000000000000000
R10: 0000000000000015 R11: 0000000000000207 R12: 0000000000000018
R13: 0000000000008340 R14: 00000000006ec3e0 R15: 00007f4d993c4700
Code: f9 c9 5e 00 48 8b 75 d0 48 c7 c7 40 60 e2 84 e8 8e 80 49 00 0f
0b e8 e2 c9 5e 00 48 8b 75 d0 48 c7 c7 00 60 e2 84 e8 77 80 49 00 <0f>
0b 4c 89 ef e8 48 8f 93 00 e9 01 fe ff ff 0f 1f 00 55 48 89
RIP: pte_list_remove+0x3ae/0x3c0 arch/x86/kvm/mmu.c:1193 RSP: ffff88005eb469d8
---[ end trace a329c3bead6aac1c ]---



> kasan: CONFIG_KASAN_INLINE enabled
> kasan: GPF could be caused by NULL-ptr deref or user memory access
> general protection fault: 0000 [#1] SMP KASAN
> Dumping ftrace buffer:
> (ftrace buffer empty)
> Modules linked in:
> CPU: 0 PID: 4407 Comm: syz-executor5 Not tainted 4.13.0-rc2+ #9
> Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS
> Google 01/01/2011
> task: ffff8801d661c0c0 task.stack: ffff8801ca9b0000
> RIP: 0010:__kvm_memslots include/linux/kvm_host.h:571 [inline]
> RIP: 0010:gfn_to_rmap+0x57f/0x6b0 arch/x86/kvm/mmu.c:1235
> RSP: 0018:ffff8801ca9b6820 EFLAGS: 00010297
> RAX: dffffc0000000000 RBX: ffff8801cc3e1078 RCX: 1ffff1003987c204
> RDX: 0000000000000000 RSI: ffff8801cc3ec3c8 RDI: ffff8801cc3e1080
> RBP: ffff8801ca9b6960 R08: 0000000000000002 R09: 0000000000000004
> R10: ffff8801ca9b6cc8 R11: ffffffff81120ef1 R12: 0000000000000002
> R13: 000000000000000f R14: 000000000000000e R15: dffffc0000000000
> FS: 0000000000000000(0000) GS:ffff8801dc000000(0000) knlGS:0000000000000000
> CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> CR2: 0000000000000000 CR3: 00000001d28ce000 CR4: 00000000001426f0
> Call Trace:
> rmap_remove arch/x86/kvm/mmu.c:1267 [inline]
> drop_spte+0x161/0x270 arch/x86/kvm/mmu.c:1350
> mmu_page_zap_pte+0x224/0x350 arch/x86/kvm/mmu.c:2482
> kvm_mmu_page_unlink_children arch/x86/kvm/mmu.c:2504 [inline]
> kvm_mmu_prepare_zap_page+0x1b7/0x1260 arch/x86/kvm/mmu.c:2548
> kvm_zap_obsolete_pages arch/x86/kvm/mmu.c:5223 [inline]
> kvm_mmu_invalidate_zap_all_pages+0x4a0/0x680 arch/x86/kvm/mmu.c:5264
> kvm_arch_flush_shadow_all+0x15/0x20 arch/x86/kvm/x86.c:8394
> kvm_mmu_notifier_release+0x59/0x90
> arch/x86/kvm/../../../virt/kvm/kvm_main.c:508
> __mmu_notifier_release+0x1d5/0x690 mm/mmu_notifier.c:75
> mmu_notifier_release include/linux/mmu_notifier.h:235 [inline]
> exit_mmap+0x3a3/0x470 mm/mmap.c:2972
> __mmput kernel/fork.c:903 [inline]
> mmput+0x223/0x6e0 kernel/fork.c:925
> exit_mm kernel/exit.c:544 [inline]
> do_exit+0x981/0x1b10 kernel/exit.c:852
> do_group_exit+0x149/0x400 kernel/exit.c:969
> get_signal+0x7e8/0x17e0 kernel/signal.c:2330
> do_signal+0x94/0x1ee0 arch/x86/kernel/signal.c:808
> exit_to_usermode_loop+0x21c/0x2d0 arch/x86/entry/common.c:157
> prepare_exit_to_usermode arch/x86/entry/common.c:194 [inline]
> syscall_return_slowpath+0x3a7/0x450 arch/x86/entry/common.c:263
> entry_SYSCALL_64_fastpath+0xbc/0xbe
> RIP: 0033:0x4512c9
> RSP: 002b:00007f5548015c18 EFLAGS: 00000206 ORIG_RAX: 00000000000000ca
> RAX: 0000000000000001 RBX: 00000000007180a8 RCX: 00000000004512c9
> RDX: 0000000000000000 RSI: 0000000000000001 RDI: 00000000007180cc
> RBP: 0000000000001fe0 R08: 0000000000000000 R09: 0000000000000000
> R10: 0000000000000000 R11: 0000000000000206 R12: 00000000004b7f09
> R13: 00000000ffffffff R14: 0000000000000007 R15: 000000000000ae80
> Code: 3c 02 00 00 48 c7 c7 20 63 62 84 c6 05 e0 42 f8 03 01 e8 25 de 44 00
> e9 da fb ff ff e8 6b 7f 5d 00 48 b8 00 00 00 00 00 fc ff df <80> 38 00 0f 85
> 1b 01 00 00 4c 8b 24 25 00 00 00 00 31 db e9 83
> RIP: __kvm_memslots include/linux/kvm_host.h:571 [inline] RSP:
> ffff8801ca9b6820
> RIP: gfn_to_rmap+0x57f/0x6b0 arch/x86/kvm/mmu.c:1235 RSP: ffff8801ca9b6820
> ---[ end trace 0a16957bec756c04 ]---
>
>
> ---
> This bug is generated by a dumb bot. It may contain errors.
> See https://goo.gl/tpsmEJ for details.
> Direct all questions to syzkaller@xxxxxxxxxxxxxxxxx
> Please credit me with: Reported-by: syzbot <syzkaller@xxxxxxxxxxxxxxxx>
>
> syzbot will keep track of this bug report.
> Once a fix for this bug is committed, please reply to this email with:
> #syz fix: exact-commit-title
> To mark this as a duplicate of another syzbot report, please reply with:
> #syz dup: exact-subject-of-another-report
> If it's a one-off invalid bug report, please reply with:
> #syz invalid
> Note: if the crash happens again, it will cause creation of a new bug
> report.
> Note: all commands must start from beginning of the line.
>
> --
> You received this message because you are subscribed to the Google Groups
> "syzkaller-bugs" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to syzkaller-bugs+unsubscribe@xxxxxxxxxxxxxxxxx
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/syzkaller-bugs/001a113e8a28d9ae59055cd80de6%40google.com.
> For more options, visit https://groups.google.com/d/optout.