diff options
author | Emmanuel Ackaouy <ack@xensource.com> | 2007-01-30 12:33:43 +0000 |
---|---|---|
committer | Emmanuel Ackaouy <ack@xensource.com> | 2007-01-30 12:33:43 +0000 |
commit | c7cdf6739ff76ed9194f697cc4b888b3a9b3fa8b (patch) | |
tree | 12699868c6263212c2bfb29b2fa2c2c9dc1b05cb | |
parent | f1efb233c12643082f7c843acab5bdc985cc34ad (diff) | |
download | xen-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.c | 8 |
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; } |