diff --git a/xen/arch/arm/mm.c b/xen/arch/arm/mm.c index 1b14f49345..9e2ff7c800 100644 --- a/xen/arch/arm/mm.c +++ b/xen/arch/arm/mm.c @@ -1036,6 +1036,7 @@ static int xen_pt_next_level(bool read_only, unsigned int level, { lpae_t *entry; int ret; + mfn_t mfn; entry = *table + offset; @@ -1053,8 +1054,10 @@ static int xen_pt_next_level(bool read_only, unsigned int level, if ( lpae_is_mapping(*entry, level) ) return XEN_TABLE_SUPER_PAGE; + mfn = lpae_get_mfn(*entry); + xen_unmap_table(*table); - *table = xen_map_table(lpae_get_mfn(*entry)); + *table = xen_map_table(mfn); return XEN_TABLE_NORMAL_PAGE; }