if ( !mfn_valid(mfn) )
{
- mfn = get_gfn_type_access(hp2m, gfn_l, &t, &old_a,
- P2M_ALLOC | P2M_UNSHARE, &page_order);
+ mfn = __get_gfn_type_access(hp2m, gfn_l, &t, &old_a,
+ P2M_ALLOC | P2M_UNSHARE, &page_order, 0);
rc = -ESRCH;
if ( !mfn_valid(mfn) || t != p2m_ram_rw )
hp2m = p2m_get_hostp2m(d);
ap2m = d->arch.altp2m_p2m[idx];
+ p2m_lock(hp2m);
p2m_lock(ap2m);
mfn = ap2m->get_entry(ap2m, gfn_x(old_gfn), &t, &a, 0, NULL, NULL);
/* Check host p2m if no valid entry in alternate */
if ( !mfn_valid(mfn) )
{
- mfn = get_gfn_type_access(hp2m, gfn_x(old_gfn), &t, &a,
- P2M_ALLOC | P2M_UNSHARE, &page_order);
+ mfn = __get_gfn_type_access(hp2m, gfn_x(old_gfn), &t, &a,
+ P2M_ALLOC | P2M_UNSHARE, &page_order, 0);
if ( !mfn_valid(mfn) || t != p2m_ram_rw )
goto out;
out:
p2m_unlock(ap2m);
+ p2m_unlock(hp2m);
return rc;
}