Re: Cannot load linux after recent efi-related changes

From: Matt Fleming
Date: Mon Sep 19 2016 - 07:14:50 EST


On Sun, 18 Sep, at 04:14:45AM, Mike Krinkin wrote:
>
> 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;

Thanks for the analysis and patch Mike, but this needs fixing further
up the call stack so that we don't map things the caller didn't
expect.

This bug was also reported in this thread,

https://lkml.kernel.org/r/1474005912.3930.10.camel@xxxxxxxxx

Could you try this patch?

---->8----