u32 old_pin;
u32 act_pin;
unsigned int cache_flags, refcnt = 0, typecnt = 0;
+ bool host_map_created = false;
struct active_grant_entry *act = NULL;
struct grant_mapping *mt;
grant_entry_header_t *shah;
cache_flags);
if ( rc != GNTST_okay )
goto undo_out;
+
+ host_map_created = true;
}
}
else if ( owner == rd || owner == dom_cow )
rc = create_grant_host_mapping(op->host_addr, frame, op->flags, 0);
if ( rc != GNTST_okay )
goto undo_out;
+
+ host_map_created = true;
}
}
else
return;
undo_out:
+ if ( host_map_created )
+ {
+ replace_grant_host_mapping(op->host_addr, frame, 0, op->flags);
+ gnttab_flush_tlb(ld);
+ }
+
while ( typecnt-- )
put_page_type(pg);