[PATCH 0/2] arm64: mm: use fully constructed struct pages from EFI page tables

Ard Biesheuvel ard.biesheuvel at linaro.org
Fri Jul 22 10:32:23 PDT 2016


As reported by Sudeep, the EFI memory attributes table handling may crash
on an uninitialized spinlock in the struct page associated with a UEFI runtime
translation table page.

This is caused by a failure to take into account the fact that generic code
treats such pages differently depending on whether they are associated with
init_mm or not. The EFI page tables are completely separate from both the
kernel and the userland mappings, and are completely static during the
lifetime of the OS, but still, the most robust solution is to simply
construct these pages fully, so that generic code that compares against
&init_mm can work safely and correctly.

Patch #1 is a preparatory patch to drop a reference to late_pgtable_alloc
from code that no longer needs it.

Patch #2 renamed late_pgtable_alloc to pgd_table_alloc, and updates it to
construct the struct page associated with the allocated page.

Ard Biesheuvel (2):
  arm64: mm: make create_mapping_late() non-allocating
  arm64: mm: run pgtable_page_ctor() on non-swapper translation table
    pages

 arch/arm64/mm/mmu.c | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

-- 
2.7.4




More information about the linux-arm-kernel mailing list