diff --git a/hypervisor/arch/x86/guest/vcpu.c b/hypervisor/arch/x86/guest/vcpu.c index a0f401ffa..32ac6e1c6 100644 --- a/hypervisor/arch/x86/guest/vcpu.c +++ b/hypervisor/arch/x86/guest/vcpu.c @@ -385,7 +385,6 @@ void destroy_vcpu(struct vcpu *vcpu) vlapic_free(vcpu); free(vcpu->arch_vcpu.vmcs); - free(vcpu->guest_msrs); per_cpu(ever_run_vcpu, vcpu->pcpu_id) = NULL; free_pcpu(vcpu->pcpu_id); free(vcpu); diff --git a/hypervisor/arch/x86/guest/vmsr.c b/hypervisor/arch/x86/guest/vmsr.c index 57c7e8764..1494b5f5c 100644 --- a/hypervisor/arch/x86/guest/vmsr.c +++ b/hypervisor/arch/x86/guest/vmsr.c @@ -105,14 +105,6 @@ void init_msr_emulation(struct vcpu *vcpu) value64 = HVA2HPA(vcpu->vm->arch_vm.msr_bitmap); exec_vmwrite64(VMX_MSR_BITMAP_FULL, value64); pr_dbg("VMX_MSR_BITMAP: 0x%016llx ", value64); - - if (!vcpu->guest_msrs) { - vcpu->guest_msrs = - (uint64_t *)calloc(msrs_count, sizeof(uint64_t)); - } - - ASSERT(vcpu->guest_msrs != NULL, ""); - (void)memset(vcpu->guest_msrs, 0U, msrs_count * sizeof(uint64_t)); } int rdmsr_vmexit_handler(struct vcpu *vcpu) diff --git a/hypervisor/include/arch/x86/guest/vcpu.h b/hypervisor/include/arch/x86/guest/vcpu.h index 676749cdc..c230db4a8 100644 --- a/hypervisor/include/arch/x86/guest/vcpu.h +++ b/hypervisor/include/arch/x86/guest/vcpu.h @@ -240,7 +240,7 @@ struct vcpu { * code. */ uint64_t msr_tsc_aux_guest; - uint64_t *guest_msrs; + uint64_t guest_msrs[IDX_MAX_MSR]; #ifdef CONFIG_MTRR_ENABLED struct mtrr_state mtrr; #endif