|
|
@@ -5016,6 +5016,13 @@ int kvm_write_guest_virt_system(struct kvm_vcpu *vcpu, gva_t addr, void *val,
|
|
|
/* kvm_write_guest_virt_system can pull in tons of pages. */
|
|
|
vcpu->arch.l1tf_flush_l1d = true;
|
|
|
|
|
|
+ /*
|
|
|
+ * FIXME: this should call handle_emulation_failure if X86EMUL_IO_NEEDED
|
|
|
+ * is returned, but our callers are not ready for that and they blindly
|
|
|
+ * call kvm_inject_page_fault. Ensure that they at least do not leak
|
|
|
+ * uninitialized kernel stack memory into cr2 and error code.
|
|
|
+ */
|
|
|
+ memset(exception, 0, sizeof(*exception));
|
|
|
return kvm_write_guest_virt_helper(addr, val, bytes, vcpu,
|
|
|
PFERR_WRITE_MASK, exception);
|
|
|
}
|