Re: [GIT PULL] EFI fix
* Linus Torvalds wrote: > On Thu, Jan 10, 2019 at 11:46 PM Ingo Molnar wrote: > > > > A single fix that adds an annotation to resolve a kmemleak false > > positive. > > This one is apparently obviated by commit 80424b02d42b ("efi: Reduce > the amount of memblock reservations for persistent allocations") ... and it turns out I mis-merged it in tip:master not realizing this connection (hence the pull request) - so good thing that Ard warned about this and you double checked it! Thanks, Ingo
Re: [GIT PULL] EFI fix
* Linus Torvalds wrote: > On Fri, Jan 11, 2019 at 6:22 AM Ard Biesheuvel > wrote: > > > > I was hoping we could merge this patch (so we can backport it), but > > resolve the conflict by dropping the kmemleak_ignore() again [..] > > Well, we'd drop the new #include line also, since it would be > pointless without the kmemleak_ignore(). > > End result: there would be nothing left. Better not to merge it at all. Indeed! > It's easy enough to backport, and just say "done differently upstream > in commit 80424b02d42b ("efi: Reduce the amount of memblock > reservations for persistent allocations"). > > The stable tree doesn't require that the *same* commits be upstream, > it only requires that the fixes be upstream and Greg&al want a pointer > to the upstream fix just so that they know they're not fixing > something that might still be broken upstream. > > See for example (just random googling) > > > https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=37435f7e80ef9adc32a69013c18f135e3f434244 > > which shows that "fixed differently upstream" case and points to why. Thanks - I'm dropping the commit from efi/urgent. Ingo
Re: [GIT PULL] EFI fix
On Fri, Jan 11, 2019 at 6:22 AM Ard Biesheuvel wrote: > > I was hoping we could merge this patch (so we can backport it), but > resolve the conflict by dropping the kmemleak_ignore() again [..] Well, we'd drop the new #include line also, since it would be pointless without the kmemleak_ignore(). End result: there would be nothing left. Better not to merge it at all. It's easy enough to backport, and just say "done differently upstream in commit 80424b02d42b ("efi: Reduce the amount of memblock reservations for persistent allocations"). The stable tree doesn't require that the *same* commits be upstream, it only requires that the fixes be upstream and Greg&al want a pointer to the upstream fix just so that they know they're not fixing something that might still be broken upstream. See for example (just random googling) https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=37435f7e80ef9adc32a69013c18f135e3f434244 which shows that "fixed differently upstream" case and points to why. Linus
Re: [GIT PULL] EFI fix
On Thu, Jan 10, 2019 at 11:46 PM Ingo Molnar wrote: > > A single fix that adds an annotation to resolve a kmemleak false > positive. This one is apparently obviated by commit 80424b02d42b ("efi: Reduce the amount of memblock reservations for persistent allocations") Linus
Re: [GIT PULL] EFI fix
On Fri, 11 Jan 2019 at 08:46, Ingo Molnar wrote: > > Linus, > > Please pull the latest efi-urgent-for-linus git tree from: > >git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git > efi-urgent-for-linus > ># HEAD: b12f5440d8ca02e8f9ab4f1461f9214295cc4f66 Merge branch 'linus' into > efi/urgent, to resolve conflict > > A single fix that adds an annotation to resolve a kmemleak false > positive. > > Thanks, > > Ingo > > --> > Qian Cai (1): > efi: Let kmemleak ignore false positives > > > drivers/firmware/efi/efi.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/drivers/firmware/efi/efi.c b/drivers/firmware/efi/efi.c > index 4c46ff6f2242..7ac09dd8f268 100644 > --- a/drivers/firmware/efi/efi.c > +++ b/drivers/firmware/efi/efi.c > @@ -31,6 +31,7 @@ > #include > #include > #include > +#include > > #include > > @@ -1026,6 +1027,8 @@ int __ref efi_mem_reserve_persistent(phys_addr_t addr, > u64 size) > if (!rsv) > return -ENOMEM; > > + kmemleak_ignore(rsv); > + > rsv->size = EFI_MEMRESERVE_COUNT(PAGE_SIZE); > atomic_set(&rsv->count, 1); > rsv->entry[0].base = addr; I was hoping we could merge this patch (so we can backport it), but resolve the conflict by dropping the kmemleak_ignore() again, since it will now complain since the kmalloc() has been replaced with a __get_free_page() in the mean time (if that makes sense)
[GIT PULL] EFI fix
Linus, Please pull the latest efi-urgent-for-linus git tree from: git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git efi-urgent-for-linus # HEAD: b12f5440d8ca02e8f9ab4f1461f9214295cc4f66 Merge branch 'linus' into efi/urgent, to resolve conflict A single fix that adds an annotation to resolve a kmemleak false positive. Thanks, Ingo --> Qian Cai (1): efi: Let kmemleak ignore false positives drivers/firmware/efi/efi.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/firmware/efi/efi.c b/drivers/firmware/efi/efi.c index 4c46ff6f2242..7ac09dd8f268 100644 --- a/drivers/firmware/efi/efi.c +++ b/drivers/firmware/efi/efi.c @@ -31,6 +31,7 @@ #include #include #include +#include #include @@ -1026,6 +1027,8 @@ int __ref efi_mem_reserve_persistent(phys_addr_t addr, u64 size) if (!rsv) return -ENOMEM; + kmemleak_ignore(rsv); + rsv->size = EFI_MEMRESERVE_COUNT(PAGE_SIZE); atomic_set(&rsv->count, 1); rsv->entry[0].base = addr;
[GIT PULL] EFI fix
Linus, Please pull the latest efi-urgent-for-linus git tree from: git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git efi-urgent-for-linus # HEAD: 9b788f32bee6b0b293a4bdfca4ad4bb0206407fb x86/efi: Access EFI MMIO data as unencrypted when SEV is active An UEFI variables fix for SEV guests. Thanks, Ingo --> Brijesh Singh (1): x86/efi: Access EFI MMIO data as unencrypted when SEV is active arch/x86/platform/efi/efi_64.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/x86/platform/efi/efi_64.c b/arch/x86/platform/efi/efi_64.c index 77873ce700ae..5f2eb3231607 100644 --- a/arch/x86/platform/efi/efi_64.c +++ b/arch/x86/platform/efi/efi_64.c @@ -417,7 +417,7 @@ static void __init __map_region(efi_memory_desc_t *md, u64 va) if (!(md->attribute & EFI_MEMORY_WB)) flags |= _PAGE_PCD; - if (sev_active()) + if (sev_active() && md->type != EFI_MEMORY_MAPPED_IO) flags |= _PAGE_ENC; pfn = md->phys_addr >> PAGE_SHIFT; -- To unsubscribe from this list: send the line "unsubscribe linux-efi" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[GIT PULL] EFI fix
Linus, Please pull the latest efi-urgent-for-linus git tree from: git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git efi-urgent-for-linus # HEAD: 792ef14df5c585c19b2831673a077504a09e5203 efi: Fix boot panic because of invalid BGRT image address A boot crash fix for certain systems where the kernel would trust a piece of firmware data it should not have. Thanks, Ingo --> Dave Young (1): efi: Fix boot panic because of invalid BGRT image address drivers/firmware/efi/efi-bgrt.c | 26 +- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/drivers/firmware/efi/efi-bgrt.c b/drivers/firmware/efi/efi-bgrt.c index 8bf27323f7a3..b58233e4ed71 100644 --- a/drivers/firmware/efi/efi-bgrt.c +++ b/drivers/firmware/efi/efi-bgrt.c @@ -27,6 +27,26 @@ struct bmp_header { u32 size; } __packed; +static bool efi_bgrt_addr_valid(u64 addr) +{ + efi_memory_desc_t *md; + + for_each_efi_memory_desc(md) { + u64 size; + u64 end; + + if (md->type != EFI_BOOT_SERVICES_DATA) + continue; + + size = md->num_pages << EFI_PAGE_SHIFT; + end = md->phys_addr + size; + if (addr >= md->phys_addr && addr < end) + return true; + } + + return false; +} + void __init efi_bgrt_init(struct acpi_table_header *table) { void *image; @@ -36,7 +56,7 @@ void __init efi_bgrt_init(struct acpi_table_header *table) if (acpi_disabled) return; - if (!efi_enabled(EFI_BOOT)) + if (!efi_enabled(EFI_MEMMAP)) return; if (table->length < sizeof(bgrt_tab)) { @@ -65,6 +85,10 @@ void __init efi_bgrt_init(struct acpi_table_header *table) goto out; } + if (!efi_bgrt_addr_valid(bgrt->image_address)) { + pr_notice("Ignoring BGRT: invalid image address\n"); + goto out; + } image = early_memremap(bgrt->image_address, sizeof(bmp_header)); if (!image) { pr_notice("Ignoring BGRT: failed to map image header memory\n"); -- To unsubscribe from this list: send the line "unsubscribe linux-efi" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html