nl1e = l1e_from_page(page, l1e_get_flags(nl1e));
}
+ nl1e = adjust_guest_l1e(nl1e, pt_dom);
+
/* Fast path for sufficiently-similar mappings. */
if ( !l1e_has_changed(ol1e, nl1e, ~FASTPATH_FLAG_WHITELIST) )
{
- nl1e = adjust_guest_l1e(nl1e, pt_dom);
rc = UPDATE_ENTRY(l1, pl1e, ol1e, nl1e, gl1mfn, pt_vcpu,
preserve_ad);
if ( page )
if ( page )
put_page(page);
- nl1e = adjust_guest_l1e(nl1e, pt_dom);
if ( unlikely(!UPDATE_ENTRY(l1, pl1e, ol1e, nl1e, gl1mfn, pt_vcpu,
preserve_ad)) )
{
return -EINVAL;
}
+ nl2e = adjust_guest_l2e(nl2e, d);
+
/* Fast path for sufficiently-similar mappings. */
if ( !l2e_has_changed(ol2e, nl2e, ~FASTPATH_FLAG_WHITELIST) )
{
- nl2e = adjust_guest_l2e(nl2e, d);
if ( UPDATE_ENTRY(l2, pl2e, ol2e, nl2e, mfn, vcpu, preserve_ad) )
return 0;
return -EBUSY;
if ( unlikely((rc = get_page_from_l2e(nl2e, mfn, d, 0)) < 0) )
return rc;
- nl2e = adjust_guest_l2e(nl2e, d);
if ( unlikely(!UPDATE_ENTRY(l2, pl2e, ol2e, nl2e, mfn, vcpu,
preserve_ad)) )
{
return -EINVAL;
}
+ nl3e = adjust_guest_l3e(nl3e, d);
+
/* Fast path for sufficiently-similar mappings. */
if ( !l3e_has_changed(ol3e, nl3e, ~FASTPATH_FLAG_WHITELIST) )
{
- nl3e = adjust_guest_l3e(nl3e, d);
rc = UPDATE_ENTRY(l3, pl3e, ol3e, nl3e, mfn, vcpu, preserve_ad);
return rc ? 0 : -EFAULT;
}
return rc;
rc = 0;
- nl3e = adjust_guest_l3e(nl3e, d);
if ( unlikely(!UPDATE_ENTRY(l3, pl3e, ol3e, nl3e, mfn, vcpu,
preserve_ad)) )
{
return -EINVAL;
}
+ nl4e = adjust_guest_l4e(nl4e, d);
+
/* Fast path for sufficiently-similar mappings. */
if ( !l4e_has_changed(ol4e, nl4e, ~FASTPATH_FLAG_WHITELIST) )
{
- nl4e = adjust_guest_l4e(nl4e, d);
rc = UPDATE_ENTRY(l4, pl4e, ol4e, nl4e, mfn, vcpu, preserve_ad);
return rc ? 0 : -EFAULT;
}
return rc;
rc = 0;
- nl4e = adjust_guest_l4e(nl4e, d);
if ( unlikely(!UPDATE_ENTRY(l4, pl4e, ol4e, nl4e, mfn, vcpu,
preserve_ad)) )
{