From 6ee2f5693ff4cd5d9241c625db16887176244e2a Mon Sep 17 00:00:00 2001 From: Keir Fraser Date: Fri, 27 Jun 2008 13:45:55 +0100 Subject: [PATCH] x86, shadow: Fix OOS bug on domain teardown. Signed-off-by: Gianluca Guida --- xen/arch/x86/mm/shadow/common.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/xen/arch/x86/mm/shadow/common.c b/xen/arch/x86/mm/shadow/common.c index 6979d583c7..34cddea6d7 100644 --- a/xen/arch/x86/mm/shadow/common.c +++ b/xen/arch/x86/mm/shadow/common.c @@ -631,6 +631,11 @@ void oos_fixup_remove(struct vcpu *v, mfn_t gmfn) perfc_incr(shadow_oos_fixup_remove); + /* If the domain is dying we might get called when deallocating + * the shadows. Fixup tables are already freed so exit now. */ + if ( d->is_dying ) + return; + idx = mfn_x(gmfn) % SHADOW_OOS_FT_HASH; for_each_vcpu(d, v) { @@ -3168,6 +3173,7 @@ void shadow_teardown(struct domain *d) { free_xenheap_pages(v->arch.paging.shadow.oos_fixups, SHADOW_OOS_FT_ORDER); + v->arch.paging.shadow.oos_fixups = NULL; } { -- 2.30.2