[PATCH] efi: force page alignment in efi_mem_insert

From: Mike Krinkin
Date: Sat Sep 17 2016 - 20:53:52 EST


efi_mem_insert might be called with unaligned range boundaries,
for example, for me it happens because esrt size is not page
aligned, that, in turn, results in wrong memory map and triggers
BUG_ON in __efi_enter_virtual_mode.

Force page alignment on memory range boundaries in efi_mem_insert.

Signed-off-by: Mike Krinkin <krinkin.m.u@xxxxxxxxx>
---
drivers/firmware/efi/memmap.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/firmware/efi/memmap.c b/drivers/firmware/efi/memmap.c
index cd96086..34322d1 100644
--- a/drivers/firmware/efi/memmap.c
+++ b/drivers/firmware/efi/memmap.c
@@ -221,8 +221,8 @@ void __init efi_memmap_insert(struct efi_memory_map *old_memmap, void *buf,
void *old, *new;

/* modifying range */
- m_start = mem->range.start;
- m_end = mem->range.end;
+ m_start = mem->range.start & ~(u64)EFI_PAGE_SIZE;
+ m_end = ALIGN(mem->range.end, EFI_PAGE_SIZE) - 1;
m_attr = mem->attribute;

for (old = old_memmap->map, new = buf;
--
2.7.4