[xen-unstable] x86: Fix teardown of relocated vcpu_info structures.

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

[xen-unstable] x86: Fix teardown of relocated vcpu_info structures.

Xen patchbot-unstable
# HG changeset patch
# User Keir Fraser <[hidden email]>
# Date 1212308186 -3600
# Node ID 85fa199b4b7bd1e7511ce7fc2361bae808c27ba6
# Parent  6e688d5a936bb22c7938c38cb26c8592544e97eb
x86: Fix teardown of relocated vcpu_info structures.
Signed-off-by: Keir Fraser <[hidden email]>
---
 xen/arch/x86/domain.c |   19 +++++++++----------
 1 files changed, 9 insertions(+), 10 deletions(-)

diff -r 6e688d5a936b -r 85fa199b4b7b xen/arch/x86/domain.c
--- a/xen/arch/x86/domain.c Fri May 30 19:31:18 2008 +0100
+++ b/xen/arch/x86/domain.c Sun Jun 01 09:16:26 2008 +0100
@@ -59,8 +59,6 @@ static void default_idle(void);
 static void default_idle(void);
 void (*pm_idle) (void) = default_idle;
 
-static void unmap_vcpu_info(struct vcpu *v);
-
 static void paravirt_ctxt_switch_from(struct vcpu *v);
 static void paravirt_ctxt_switch_to(struct vcpu *v);
 
@@ -432,8 +430,6 @@ void vcpu_destroy(struct vcpu *v)
 {
     if ( is_pv_32on64_vcpu(v) )
         release_compat_l4(v);
-
-    unmap_vcpu_info(v);
 
     if ( is_hvm_vcpu(v) )
         hvm_vcpu_destroy(v);
@@ -1864,16 +1860,19 @@ int domain_relinquish_resources(struct d
         /* Tear down paging-assistance stuff. */
         paging_teardown(d);
 
-        /* Drop the in-use references to page-table bases. */
         for_each_vcpu ( d, v )
+        {
+            /* Drop the in-use references to page-table bases. */
             vcpu_destroy_pagetables(v);
 
-        /*
-         * Relinquish GDT mappings. No need for explicit unmapping of the LDT
-         * as it automatically gets squashed when the guest's mappings go away.
-         */
-        for_each_vcpu(d, v)
+            /*
+             * Relinquish GDT mappings. No need for explicit unmapping of the
+             * LDT as it automatically gets squashed with the guest mappings.
+             */
             destroy_gdt(v);
+
+            unmap_vcpu_info(v);
+        }
 
         d->arch.relmem = RELMEM_xen_l4;
         /* fallthrough */

_______________________________________________
Xen-changelog mailing list
[hidden email]
http://lists.xensource.com/xen-changelog