diff --git a/xen/arch/arm/p2m.c b/xen/arch/arm/p2m.c index ef8bd4b6ab..667ea595f4 100644 --- a/xen/arch/arm/p2m.c +++ b/xen/arch/arm/p2m.c @@ -74,10 +74,16 @@ struct page_info *p2m_get_page_from_gfn(struct domain *d, gfn_t gfn, */ if ( p2m_is_foreign(p2mt) ) { - struct domain *fdom = page_get_owner_and_reference(page); - ASSERT(fdom != NULL); - ASSERT(fdom != d); - return page; + const struct domain *fdom = page_get_owner_and_reference(page); + + if ( fdom ) + { + if ( fdom != d ) + return page; + ASSERT_UNREACHABLE(); + put_page(page); + } + return NULL; } return get_page(page, d) ? page : NULL;