[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH for-next v2 07/10] x86/domain: factor out pv_domain_destroy
No functional change. Signed-off-by: Wei Liu <wei.liu2@xxxxxxxxxx> --- v2: 1. reset fields 2. destroy perdomain mapping Cc: Jan Beulich <jbeulich@xxxxxxxx> Cc: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> --- xen/arch/x86/domain.c | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/xen/arch/x86/domain.c b/xen/arch/x86/domain.c index fd5d47ab3d..952e05366a 100644 --- a/xen/arch/x86/domain.c +++ b/xen/arch/x86/domain.c @@ -536,6 +536,16 @@ static bool emulation_flags_ok(const struct domain *d, uint32_t emflags) return true; } +static void pv_domain_destroy(struct domain *d) +{ + destroy_perdomain_mapping(d, GDT_LDT_VIRT_START, + GDT_LDT_MBYTES << (20 - PAGE_SHIFT)); + xfree(d->arch.pv_domain.cpuidmasks); + d->arch.pv_domain.cpuidmasks = NULL; + free_xenheap_page(d->arch.pv_domain.gdt_ldt_l1tab); + d->arch.pv_domain.gdt_ldt_l1tab = NULL; +} + int arch_domain_create(struct domain *d, unsigned int domcr_flags, struct xen_arch_domainconfig *config) { @@ -712,10 +722,8 @@ int arch_domain_create(struct domain *d, unsigned int domcr_flags, paging_final_teardown(d); free_perdomain_mappings(d); if ( is_pv_domain(d) ) - { - xfree(d->arch.pv_domain.cpuidmasks); - free_xenheap_page(d->arch.pv_domain.gdt_ldt_l1tab); - } + pv_domain_destroy(d); + return rc; } @@ -735,10 +743,7 @@ void arch_domain_destroy(struct domain *d) free_perdomain_mappings(d); if ( is_pv_domain(d) ) - { - free_xenheap_page(d->arch.pv_domain.gdt_ldt_l1tab); - xfree(d->arch.pv_domain.cpuidmasks); - } + pv_domain_destroy(d); free_xenheap_page(d->shared_info); cleanup_domain_irq_mapping(d); -- 2.11.0 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |