lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite for Android: free password hash cracker in your pocket
[<prev] [next>] [day] [month] [year] [list]
Message-Id: <1304013746-20239-1-git-send-email-mjg@redhat.com>
Date:	Thu, 28 Apr 2011 14:02:26 -0400
From:	Matthew Garrett <mjg@...hat.com>
To:	x86@...nel.org
Cc:	linux-kernel@...r.kernel.org, Matthew Garrett <mjg@...hat.com>
Subject: [PATCH] x86: Populate virtual address field of all EFI memmap entries

Our current implementation of SetVirtualAddressMap passes back the entire
memory map it received from the firmware, but only modifies entries that
have the runtime attribute set. Experiments (mostly involving screaming)
with real-world EFI implementations suggests that some will call
ConvertPointer on data that exist outside runtime regions anyway. The
easiest fix here seems to be to continue remapping runtime regions and
just to copy the physical address to the virtal address for other regions.

This doesn't fix any observed problems with our current implementation,
but it seems better to be safe than sorry.

Signed-off-by: Matthew Garrett <mjg@...hat.com>
---
 arch/x86/platform/efi/efi.c |    4 +++-
 1 files changed, 3 insertions(+), 1 deletions(-)

diff --git a/arch/x86/platform/efi/efi.c b/arch/x86/platform/efi/efi.c
index 0fe27d7..f11b3b0 100644
--- a/arch/x86/platform/efi/efi.c
+++ b/arch/x86/platform/efi/efi.c
@@ -507,8 +507,10 @@ void __init efi_enter_virtual_mode(void)
 	efi.systab = NULL;
 	for (p = memmap.map; p < memmap.map_end; p += memmap.desc_size) {
 		md = p;
-		if (!(md->attribute & EFI_MEMORY_RUNTIME))
+		if (!(md->attribute & EFI_MEMORY_RUNTIME)) {
+			md->virt_addr = md->phys_addr;
 			continue;
+		}
 
 		size = md->num_pages << EFI_PAGE_SHIFT;
 		end = md->phys_addr + size;
-- 
1.7.4.4

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ