Since vcpu_destroy_pagetables() clears v->arch.guest_table for hvm vCPUs,
it must be avoided to free the page with MFN zero.
Signed-off-by: Jan Beulich <jbeulich@novell.com>
Index: 2007-04-18/xen/arch/x86/domain.c
==================================================================---
2007-04-18.orig/xen/arch/x86/domain.c 2007-04-26 13:52:22.000000000 +0200
+++ 2007-04-18/xen/arch/x86/domain.c 2007-04-26 13:53:14.000000000 +0200
@@ -252,9 +252,12 @@ static int setup_compat_l4(struct vcpu *
static void release_compat_l4(struct vcpu *v)
{
- free_domheap_page(pagetable_get_page(v->arch.guest_table));
- v->arch.guest_table = pagetable_null();
- v->arch.guest_table_user = pagetable_null();
+ if ( !pagetable_is_null(v->arch.guest_table) )
+ {
+ free_domheap_page(pagetable_get_page(v->arch.guest_table));
+ v->arch.guest_table = pagetable_null();
+ v->arch.guest_table_user = pagetable_null();
+ }
}
static inline int may_switch_mode(struct domain *d)
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel
On 26/4/07 16:55, "Jan Beulich" <jbeulich@novell.com> wrote:> Since vcpu_destroy_pagetables() clears v->arch.guest_table for hvm vCPUs, > it must be avoided to free the page with MFN zero.Up to yesterday there was never a case that we''d have an HVM vcpu with IS_COMPAT()==1 (although there was some code that tried to handle this case). Now that we support this there''s a general need for a cleanup so that code that is compat-mode-dependent explicitly checks for PV vs. HVM if that matters to it. I''ve applied an initial general fix as c/s 14961:f18e1ca6. I think everything else is okay, but I''m not 100% sure about shadow code (although that was one place that was explicitly checking for PV 32bit guests where it cared, so I hope it''s okay). Please take a look and make sure I''m not very confused about what''s going on. :-) -- Keir _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel