On Tue, Dec 17, 2013 at 12:36:37AM +0100, Borislav Petkov wrote: > @@ -880,6 +906,19 @@ void __init efi_enter_virtual_mode(void) > > efi_dump_pagetable(); > > + /* > + * It can happen that the physical address of new_memmap lands in memory > + * which is not mapped in the EFI page table. Therefore we need to go > + * and ident-map those pages containing the map before calling > + * phys_efi_set_virtual_address_map(). > + */ > + if (kernel_map_pages_in_pgd(pgd, __pa(new_memmap), __pa(new_memmap), > + 1 << new_memmap_shift, _PAGE_NX)) { > + pr_err("Error ident-mapping new memmap (0x%lx)!\n", > + __pa(new_memmap)); > + goto err_out; > + } > + > status = phys_efi_set_virtual_address_map( > memmap.desc_size * count, > memmap.desc_size, > @@ -916,7 +955,7 @@ void __init efi_enter_virtual_mode(void) > if (efi_enabled(EFI_OLD_MEMMAP) && (__supported_pte_mask & _PAGE_NX)) > runtime_code_page_mkexec(); > > - kfree(new_memmap); > + __free_pages(new_memmap, new_memmap_shift); Note to self: carve out the error path of populate_pgd() into a separate function and call it here to unmap the pages previously mapped above as we're freeing them here. -- Regards/Gruss, Boris. Sent from a fat crate under my desk. Formatting is fine. -- -- To unsubscribe from this list: send the line "unsubscribe linux-efi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html