aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEmmanuel Ackaouy <ack@xensource.com>2007-01-30 12:33:43 +0000
committerEmmanuel Ackaouy <ack@xensource.com>2007-01-30 12:33:43 +0000
commitc7cdf6739ff76ed9194f697cc4b888b3a9b3fa8b (patch)
tree12699868c6263212c2bfb29b2fa2c2c9dc1b05cb
parentf1efb233c12643082f7c843acab5bdc985cc34ad (diff)
downloadxen-c7cdf6739ff76ed9194f697cc4b888b3a9b3fa8b.tar.gz
xen-c7cdf6739ff76ed9194f697cc4b888b3a9b3fa8b.tar.bz2
xen-c7cdf6739ff76ed9194f697cc4b888b3a9b3fa8b.zip
[XEN] 32on64 fix compat page table shutdown
When releasing the guest page table, do not clobber the xen private L4 page pointer which is managed by setup/release_compat_l4. Signed-off-by: Emmanuel Ackaouy <ack@xensource.com>
-rw-r--r--xen/arch/x86/domain.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/xen/arch/x86/domain.c b/xen/arch/x86/domain.c
index a99871c72a..653ceafb0b 100644
--- a/xen/arch/x86/domain.c
+++ b/xen/arch/x86/domain.c
@@ -1412,7 +1412,13 @@ static void vcpu_destroy_pagetables(struct vcpu *v)
put_page_and_type(mfn_to_page(pfn));
}
- v->arch.guest_table = pagetable_null();
+ if ( is_hvm_vcpu(v) )
+ v->arch.guest_table = pagetable_null();
+ else
+ l4e_write(
+ (l4_pgentry_t *) __va(pagetable_get_paddr(v->arch.guest_table)),
+ l4e_empty());
+
v->arch.cr3 = 0;
return;
}