From: "Radim Krčmář" <rkrcmar@redhat.com>
To: David Hildenbrand <david@redhat.com>
Cc: kvm@vger.kernel.org, Paolo Bonzini <pbonzini@redhat.com>,
Nick Desaulniers <nick.desaulniers@gmail.com>
Subject: Re: [PATCH v1] KVM: x86: fix em_fxstor() sleeping while in atomic
Date: Fri, 10 Nov 2017 22:41:20 +0100 [thread overview]
Message-ID: <20171110214119.GG2189@flask> (raw)
In-Reply-To: <20171107170405.6989-1-david@redhat.com>
2017-11-07 18:04+0100, David Hildenbrand:
> Commit 9d643f63128b ("KVM: x86: avoid large stack allocations in
> em_fxrstor") optimize the stack size, but introduced a guest memory access
> which might sleep while in atomic.
>
> Fix it by introducing, again, a second fxregs_state. Try to avoid
> large stacks by using noinline. Add some helpful comments.
>
> Reported by syzbot:
>
> in_atomic(): 1, irqs_disabled(): 0, pid: 2909, name: syzkaller879109
> 2 locks held by syzkaller879109/2909:
> #0: (&vcpu->mutex){+.+.}, at: [<ffffffff8106222c>] vcpu_load+0x1c/0x70
> arch/x86/kvm/../../../virt/kvm/kvm_main.c:154
> #1: (&kvm->srcu){....}, at: [<ffffffff810dd162>] vcpu_enter_guest
> arch/x86/kvm/x86.c:6983 [inline]
> #1: (&kvm->srcu){....}, at: [<ffffffff810dd162>] vcpu_run
> arch/x86/kvm/x86.c:7061 [inline]
> #1: (&kvm->srcu){....}, at: [<ffffffff810dd162>]
> kvm_arch_vcpu_ioctl_run+0x1bc2/0x58b0 arch/x86/kvm/x86.c:7222
> CPU: 1 PID: 2909 Comm: syzkaller879109 Not tainted 4.13.0-rc4-next-20170811
> Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011
> Call Trace:
> __dump_stack lib/dump_stack.c:16 [inline]
> dump_stack+0x194/0x257 lib/dump_stack.c:52
> ___might_sleep+0x2b2/0x470 kernel/sched/core.c:6014
> __might_sleep+0x95/0x190 kernel/sched/core.c:5967
> __might_fault+0xab/0x1d0 mm/memory.c:4383
> __copy_from_user include/linux/uaccess.h:71 [inline]
> __kvm_read_guest_page+0x58/0xa0
> arch/x86/kvm/../../../virt/kvm/kvm_main.c:1771
> kvm_vcpu_read_guest_page+0x44/0x60
> arch/x86/kvm/../../../virt/kvm/kvm_main.c:1791
> kvm_read_guest_virt_helper+0x76/0x140 arch/x86/kvm/x86.c:4407
> kvm_read_guest_virt_system+0x3c/0x50 arch/x86/kvm/x86.c:4466
> segmented_read_std+0x10c/0x180 arch/x86/kvm/emulate.c:819
> em_fxrstor+0x27b/0x410 arch/x86/kvm/emulate.c:4022
> x86_emulate_insn+0x55d/0x3c50 arch/x86/kvm/emulate.c:5471
> x86_emulate_instruction+0x411/0x1ca0 arch/x86/kvm/x86.c:5698
> kvm_mmu_page_fault+0x18b/0x2c0 arch/x86/kvm/mmu.c:4854
> handle_ept_violation+0x1fc/0x5e0 arch/x86/kvm/vmx.c:6400
> vmx_handle_exit+0x281/0x1ab0 arch/x86/kvm/vmx.c:8718
> vcpu_enter_guest arch/x86/kvm/x86.c:6999 [inline]
> vcpu_run arch/x86/kvm/x86.c:7061 [inline]
> kvm_arch_vcpu_ioctl_run+0x1cee/0x58b0 arch/x86/kvm/x86.c:7222
> kvm_vcpu_ioctl+0x64c/0x1010 arch/x86/kvm/../../../virt/kvm/kvm_main.c:2591
> vfs_ioctl fs/ioctl.c:45 [inline]
> do_vfs_ioctl+0x1b1/0x1520 fs/ioctl.c:685
> SYSC_ioctl fs/ioctl.c:700 [inline]
> SyS_ioctl+0x8f/0xc0 fs/ioctl.c:691
> entry_SYSCALL_64_fastpath+0x1f/0xbe
> RIP: 0033:0x437fc9
> RSP: 002b:00007ffc7b4d5ab8 EFLAGS: 00000206 ORIG_RAX: 0000000000000010
> RAX: ffffffffffffffda RBX: 00000000004002b0 RCX: 0000000000437fc9
> RDX: 0000000000000000 RSI: 000000000000ae80 RDI: 0000000000000005
> RBP: 0000000000000086 R08: 0000000000000000 R09: 0000000020ae8000
> R10: 0000000000009120 R11: 0000000000000206 R12: 0000000000000000
> R13: 0000000000000004 R14: 0000000000000004 R15: 0000000020077000
>
> Fixes: 9d643f63128b ("KVM: x86: avoid large stack allocations in em_fxrstor")
> Signed-off-by: David Hildenbrand <david@redhat.com>
> ---
Applied, thanks.
prev parent reply other threads:[~2017-11-10 21:41 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-11-07 17:04 [PATCH v1] KVM: x86: fix em_fxstor() sleeping while in atomic David Hildenbrand
2017-11-10 21:41 ` Radim Krčmář [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20171110214119.GG2189@flask \
--to=rkrcmar@redhat.com \
--cc=david@redhat.com \
--cc=kvm@vger.kernel.org \
--cc=nick.desaulniers@gmail.com \
--cc=pbonzini@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.