Signed-off-by: Wei Liu <wei.liu2@citrix.com>
Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
Acked-by: George Dunlap <george.dunlap@eu.citrix.com>
void free_perdomain_mappings(struct domain *d)
{
- l3_pgentry_t *l3tab = __map_domain_page(d->arch.perdomain_l3_pg);
+ l3_pgentry_t *l3tab;
unsigned int i;
+ if ( !d->arch.perdomain_l3_pg )
+ return;
+
+ l3tab = __map_domain_page(d->arch.perdomain_l3_pg);
+
for ( i = 0; i < PERDOMAIN_SLOTS; ++i)
if ( l3e_get_flags(l3tab[i]) & _PAGE_PRESENT )
{
unmap_domain_page(l3tab);
free_domheap_page(d->arch.perdomain_l3_pg);
+ d->arch.perdomain_l3_pg = NULL;
}
#ifdef MEMORY_GUARD