x86/HVM: prevent use-after-free when destroying a domain hvm_domain_relinquish_resources() can free certain domain resources which can still be accessed, e.g. by HVMOP_set_param, while the domain is being cleaned up. Signed-off-by: Mihai Donțu Tested-by: Răzvan Cojocaru Reviewed-by: Andrew Cooper Reviewed-by: Jan Beulich --- a/xen/arch/x86/hvm/hvm.c +++ b/xen/arch/x86/hvm/hvm.c @@ -602,13 +602,13 @@ void hvm_domain_relinquish_resources(str hpet_deinit(d); } - xfree(d->arch.hvm_domain.io_handler); - xfree(d->arch.hvm_domain.params); xfree(d->arch.hvm_domain.pbuf); } void hvm_domain_destroy(struct domain *d) { + xfree(d->arch.hvm_domain.io_handler); + xfree(d->arch.hvm_domain.params); hvm_funcs.domain_destroy(d); rtc_deinit(d); stdvga_deinit(d);