diff --git a/xen/arch/x86/mm/p2m.c b/xen/arch/x86/mm/p2m.c index 1d57e5c055..ae70a920b5 100644 --- a/xen/arch/x86/mm/p2m.c +++ b/xen/arch/x86/mm/p2m.c @@ -501,9 +501,9 @@ struct page_info *get_page_from_gfn_p2m( if ( fdom == NULL ) page = NULL; } - else if ( !get_page(page, d) + else if ( !get_page(page, d) && /* Page could be shared */ - && !get_page(page, dom_cow) ) + (!p2m_is_shared(*t) || !get_page(page, dom_cow)) ) page = NULL; } p2m_read_unlock(p2m);