From 3496fc8fb5cfadaa049796069bc5daf634a00c8d Mon Sep 17 00:00:00 2001 From: Wei Liu Date: Mon, 24 Apr 2017 14:37:48 +0100 Subject: [PATCH] x86/domain: factor out pv_vcpu_destroy The function is made idempotent on purpose. Note that free_compat_l4, release_compat_l4 and pv_destroy_gdt_ldt_l1tab are idempotent already. No functional change. Signed-off-by: Wei Liu Reviewed-by: Andrew Cooper --- xen/arch/x86/domain.c | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/xen/arch/x86/domain.c b/xen/arch/x86/domain.c index 673a6d95f9..529414655e 100644 --- a/xen/arch/x86/domain.c +++ b/xen/arch/x86/domain.c @@ -487,17 +487,24 @@ int vcpu_initialise(struct vcpu *v) return rc; } -void vcpu_destroy(struct vcpu *v) +static void pv_vcpu_destroy(struct vcpu *v) { - xfree(v->arch.vm_event); - v->arch.vm_event = NULL; - if ( is_pv_32bit_vcpu(v) ) { free_compat_arg_xlat(v); release_compat_l4(v); } + pv_destroy_gdt_ldt_l1tab(v); + xfree(v->arch.pv_vcpu.trap_ctxt); + v->arch.pv_vcpu.trap_ctxt = NULL; +} + +void vcpu_destroy(struct vcpu *v) +{ + xfree(v->arch.vm_event); + v->arch.vm_event = NULL; + vcpu_destroy_fpu(v); if ( !is_idle_domain(v->domain) ) @@ -506,10 +513,7 @@ void vcpu_destroy(struct vcpu *v) if ( is_hvm_vcpu(v) ) hvm_vcpu_destroy(v); else - { - pv_destroy_gdt_ldt_l1tab(v); - xfree(v->arch.pv_vcpu.trap_ctxt); - } + pv_vcpu_destroy(v); } static bool emulation_flags_ok(const struct domain *d, uint32_t emflags) -- 2.39.5