Commit 5663d8f
kvm: x86: fix WARN due to uninitialized guest FPU state
------------[ cut here ]------------
Bad FPU state detected at kvm_put_guest_fpu+0xd8/0x2d0 [kvm], reinitializing FPU registers.
WARNING: CPU: 1 PID: 4594 at arch/x86/mm/extable.c:103 ex_handler_fprestore+0x88/0x90
CPU: 1 PID: 4594 Comm: qemu-system-x86 Tainted: G B OE 4.15.0-rc2+ #10
RIP: 0010:ex_handler_fprestore+0x88/0x90
Call Trace:
fixup_exception+0x4e/0x60
do_general_protection+0xff/0x270
general_protection+0x22/0x30
RIP: 0010:kvm_put_guest_fpu+0xd8/0x2d0 [kvm]
RSP: 0018:ffff8803d5627810 EFLAGS: 00010246
kvm_vcpu_reset+0x3b4/0x3c0 [kvm]
kvm_apic_accept_events+0x1c0/0x240 [kvm]
kvm_arch_vcpu_ioctl_run+0x1658/0x2fb0 [kvm]
kvm_vcpu_ioctl+0x479/0x880 [kvm]
do_vfs_ioctl+0x142/0x9a0
SyS_ioctl+0x74/0x80
do_syscall_64+0x15f/0x600
where kvm_put_guest_fpu is called without a prior kvm_load_guest_fpu.
To fix it, move kvm_load_guest_fpu to the very beginning of
kvm_arch_vcpu_ioctl_run.
Cc: stable@vger.kernel.org
Fixes: f775b13
Signed-off-by: Peter Xu <peterx@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>1 parent d73235d commit 5663d8f
1 file changed
Lines changed: 4 additions & 8 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
7264 | 7264 | | |
7265 | 7265 | | |
7266 | 7266 | | |
7267 | | - | |
7268 | 7267 | | |
7269 | 7268 | | |
7270 | | - | |
7271 | | - | |
7272 | 7269 | | |
7273 | 7270 | | |
| 7271 | + | |
| 7272 | + | |
7274 | 7273 | | |
7275 | 7274 | | |
7276 | 7275 | | |
| |||
7296 | 7295 | | |
7297 | 7296 | | |
7298 | 7297 | | |
7299 | | - | |
7300 | | - | |
7301 | 7298 | | |
7302 | 7299 | | |
7303 | 7300 | | |
7304 | 7301 | | |
7305 | 7302 | | |
7306 | | - | |
| 7303 | + | |
7307 | 7304 | | |
7308 | 7305 | | |
7309 | 7306 | | |
| |||
7312 | 7309 | | |
7313 | 7310 | | |
7314 | 7311 | | |
7315 | | - | |
7316 | | - | |
7317 | 7312 | | |
| 7313 | + | |
7318 | 7314 | | |
7319 | 7315 | | |
7320 | 7316 | | |
| |||
0 commit comments