|
@@ -1959,6 +1959,11 @@ int kvm_set_msr_common(struct kvm_vcpu *vcpu, struct msr_data *msr_info)
|
|
/* ...but clean it before doing the actual write */
|
|
/* ...but clean it before doing the actual write */
|
|
vcpu->arch.time_offset = data & ~(PAGE_MASK | 1);
|
|
vcpu->arch.time_offset = data & ~(PAGE_MASK | 1);
|
|
|
|
|
|
|
|
+ /* Check that the address is 32-byte aligned. */
|
|
|
|
+ if (vcpu->arch.time_offset &
|
|
|
|
+ (sizeof(struct pvclock_vcpu_time_info) - 1))
|
|
|
|
+ break;
|
|
|
|
+
|
|
vcpu->arch.time_page =
|
|
vcpu->arch.time_page =
|
|
gfn_to_page(vcpu->kvm, data >> PAGE_SHIFT);
|
|
gfn_to_page(vcpu->kvm, data >> PAGE_SHIFT);
|
|
|
|
|