|
@@ -1104,7 +1104,13 @@ static int kvm_hv_set_msr(struct kvm_vcpu *vcpu, u32 msr, u64 data, bool host)
|
|
|
addr = kvm_vcpu_gfn_to_hva(vcpu, gfn);
|
|
|
if (kvm_is_error_hva(addr))
|
|
|
return 1;
|
|
|
- if (__clear_user((void __user *)addr, PAGE_SIZE))
|
|
|
+
|
|
|
+ /*
|
|
|
+ * Clear apic_assist portion of f(struct hv_vp_assist_page
|
|
|
+ * only, there can be valuable data in the rest which needs
|
|
|
+ * to be preserved e.g. on migration.
|
|
|
+ */
|
|
|
+ if (__clear_user((void __user *)addr, sizeof(u32)))
|
|
|
return 1;
|
|
|
hv_vcpu->hv_vapic = data;
|
|
|
kvm_vcpu_mark_page_dirty(vcpu, gfn);
|