diff mbox

[v3] x86/HVM: Fix teardown ordering in hvm_vcpu_destroy()

Message ID 1484056982-7694-1-git-send-email-suravee.suthikulpanit@amd.com (mailing list archive)
State New, archived
Headers show

Commit Message

Suravee Suthikulpanit Jan. 10, 2017, 2:03 p.m. UTC
The order of destroy function calls in hvm_vcpu_destroy() should be
the reverse of init calls in hvm_vcpu_initialise().

Signed-off-by: Suravee Suthikulpanit <suravee.suthikulpanit@amd.com>
Reviewed-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Reviewed-by: Kevin Tian <kevin.tian@intel.com>
Cc: Jan Beulich <jbeulich@suse.com>
Cc: Boris Ostrovsky <boris.ostrovsky@oracle.com>
---
Note: I separate this out from the previously sent AMD SVM AVIC patch
series since this is a standalone fix.

 xen/arch/x86/hvm/hvm.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

Comments

Andrew Cooper Jan. 10, 2017, 2:15 p.m. UTC | #1
On 10/01/17 14:03, Suravee Suthikulpanit wrote:
> The order of destroy function calls in hvm_vcpu_destroy() should be
> the reverse of init calls in hvm_vcpu_initialise().
>
> Signed-off-by: Suravee Suthikulpanit <suravee.suthikulpanit@amd.com>
> Reviewed-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
> Reviewed-by: Kevin Tian <kevin.tian@intel.com>
> Cc: Jan Beulich <jbeulich@suse.com>
> Cc: Boris Ostrovsky <boris.ostrovsky@oracle.com>

Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com> and queued.

> ---
> Note: I separate this out from the previously sent AMD SVM AVIC patch
> series since this is a standalone fix.
>
>  xen/arch/x86/hvm/hvm.c | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c
> index 25dc759..d465596 100644
> --- a/xen/arch/x86/hvm/hvm.c
> +++ b/xen/arch/x86/hvm/hvm.c
> @@ -1610,13 +1610,13 @@ void hvm_vcpu_destroy(struct vcpu *v)
>  
>      free_compat_arg_xlat(v);
>  
> -    tasklet_kill(&v->arch.hvm_vcpu.assert_evtchn_irq_tasklet);
> -    hvm_vcpu_cacheattr_destroy(v);
> +    hvm_funcs.vcpu_destroy(v);
>  
>      if ( is_hvm_vcpu(v) )
>          vlapic_destroy(v);
>  
> -    hvm_funcs.vcpu_destroy(v);
> +    tasklet_kill(&v->arch.hvm_vcpu.assert_evtchn_irq_tasklet);
> +    hvm_vcpu_cacheattr_destroy(v);
>  }
>  
>  void hvm_vcpu_down(struct vcpu *v)
diff mbox

Patch

diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c
index 25dc759..d465596 100644
--- a/xen/arch/x86/hvm/hvm.c
+++ b/xen/arch/x86/hvm/hvm.c
@@ -1610,13 +1610,13 @@  void hvm_vcpu_destroy(struct vcpu *v)
 
     free_compat_arg_xlat(v);
 
-    tasklet_kill(&v->arch.hvm_vcpu.assert_evtchn_irq_tasklet);
-    hvm_vcpu_cacheattr_destroy(v);
+    hvm_funcs.vcpu_destroy(v);
 
     if ( is_hvm_vcpu(v) )
         vlapic_destroy(v);
 
-    hvm_funcs.vcpu_destroy(v);
+    tasklet_kill(&v->arch.hvm_vcpu.assert_evtchn_irq_tasklet);
+    hvm_vcpu_cacheattr_destroy(v);
 }
 
 void hvm_vcpu_down(struct vcpu *v)