You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
Merge tag 'efi-next' of git://git.kernel.org/pub/scm/linux/kernel/git/mfleming/efi into efi/core
Pull EFI fix from Matt Fleming: * Fix a boot crash reported by Mike Galbraith and Mike Krinkin. The new EFI memory map reservation code didn't align reservations to EFI_PAGE_SIZE boundaries causing bogus regions to be inserted into the global EFI memory map (Matt Fleming) Signed-off-by: Ingo Molnar <mingo@kernel.org>
This commit is contained in:
@@ -201,8 +201,12 @@ void __init efi_arch_mem_reserve(phys_addr_t addr, u64 size)
|
||||
return;
|
||||
}
|
||||
|
||||
size += addr % EFI_PAGE_SIZE;
|
||||
size = round_up(size, EFI_PAGE_SIZE);
|
||||
addr = round_down(addr, EFI_PAGE_SIZE);
|
||||
|
||||
mr.range.start = addr;
|
||||
mr.range.end = addr + size;
|
||||
mr.range.end = addr + size - 1;
|
||||
mr.attribute = md.attribute | EFI_MEMORY_RUNTIME;
|
||||
|
||||
num_entries = efi_memmap_split_count(&md, &mr.range);
|
||||
|
||||
@@ -225,6 +225,17 @@ void __init efi_memmap_insert(struct efi_memory_map *old_memmap, void *buf,
|
||||
m_end = mem->range.end;
|
||||
m_attr = mem->attribute;
|
||||
|
||||
/*
|
||||
* The EFI memory map deals with regions in EFI_PAGE_SIZE
|
||||
* units. Ensure that the region described by 'mem' is aligned
|
||||
* correctly.
|
||||
*/
|
||||
if (!IS_ALIGNED(m_start, EFI_PAGE_SIZE) ||
|
||||
!IS_ALIGNED(m_end + 1, EFI_PAGE_SIZE)) {
|
||||
WARN_ON(1);
|
||||
return;
|
||||
}
|
||||
|
||||
for (old = old_memmap->map, new = buf;
|
||||
old < old_memmap->map_end;
|
||||
old += old_memmap->desc_size, new += old_memmap->desc_size) {
|
||||
|
||||
Reference in New Issue
Block a user