The owner domain of shared pages is dom_cow, use that for get_page otherwise the function fails to return the correct page.
Signed-off-by: Tamas K Lengyel <tamas.leng...@intel.com> --- xen/arch/x86/mm/p2m.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/xen/arch/x86/mm/p2m.c b/xen/arch/x86/mm/p2m.c index 3119269073..fdeb742707 100644 --- a/xen/arch/x86/mm/p2m.c +++ b/xen/arch/x86/mm/p2m.c @@ -594,7 +594,10 @@ struct page_info *p2m_get_page_from_gfn( if ( p2m_is_ram(*t) && mfn_valid(mfn) ) { page = mfn_to_page(mfn); - if ( !get_page(page, p2m->domain) ) + if ( !get_page(page, p2m->domain) && + /* Page could be shared */ + (!dom_cow || !p2m_is_shared(*t) || + !get_page(page, dom_cow)) ) page = NULL; } put_gfn(p2m->domain, gfn_x(gfn)); -- 2.20.1 _______________________________________________ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel