> @@ -607,6 +607,7 @@ struct page_info *p2m_get_page_from_gfn(
>
>          /* Error path: not a suitable GFN at all */
>          if ( !p2m_is_ram(*t) && !p2m_is_paging(*t) && !p2m_is_pod(*t) &&
> +             (!p2m_is_shared(*t) || !(q & P2M_UNSHARE)) &&
>               !mem_sharing_is_fork(p2m->domain) )
>              return NULL;
>      }

I don't follow what this is fixing. A shared entry would return true
to p2m_is_ram() - p2m_ram_shared is listed under P2M_RAM_TYPES - so
the rest of the if statement would never be checked. So if we get past
that check we know we definitely don't have a shared entry, ie
p2m_is_shared must be false ie the check for P2M_UNSHARE is dead code.
Am I missing something?

Tamas

Tamas

Reply via email to