[3.8.y.z extended stable] Patch "x86/efi: Fix off-by-one bug in EFI Boot Services reservation" has been added to staging queue
Kamal Mostafa
kamal at canonical.com
Fri Feb 7 21:36:40 UTC 2014
This is a note to let you know that I have just added a patch titled
x86/efi: Fix off-by-one bug in EFI Boot Services reservation
to the linux-3.8.y-queue branch of the 3.8.y.z extended stable tree
which can be found at:
http://kernel.ubuntu.com/git?p=ubuntu/linux.git;a=shortlog;h=refs/heads/linux-3.8.y-queue
This patch is scheduled to be released in version 3.8.13.18.
If you, or anyone else, feels it should not be added to this tree, please
reply to this email.
For more information about the 3.8.y.z tree, see
https://wiki.ubuntu.com/Kernel/Dev/ExtendedStable
Thanks.
-Kamal
------
>From c5d7f3fa77acd85518c081c640b0937b13f996f0 Mon Sep 17 00:00:00 2001
From: Dave Young <dyoung at redhat.com>
Date: Fri, 20 Dec 2013 18:02:15 +0800
Subject: x86/efi: Fix off-by-one bug in EFI Boot Services reservation
commit a7f84f03f660d93574ac88835d056c0d6468aebe upstream.
Current code check boot service region with kernel text region by:
start+size >= __pa_symbol(_text)
The end of the above region should be start + size - 1 instead.
I see this problem in ovmf + Fedora 19 grub boot:
text start: 1000000 md start: 800000 md size: 800000
Signed-off-by: Dave Young <dyoung at redhat.com>
Acked-by: Borislav Petkov <bp at suse.de>
Acked-by: Toshi Kani <toshi.kani at hp.com>
Tested-by: Toshi Kani <toshi.kani at hp.com>
Signed-off-by: Matt Fleming <matt.fleming at intel.com>
[ kamal: backport to 3.8 (virt_to_phys instead of __pa_symbol) ]
Signed-off-by: Kamal Mostafa <kamal at canonical.com>
---
arch/x86/platform/efi/efi.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/x86/platform/efi/efi.c b/arch/x86/platform/efi/efi.c
index 2a5d329..b826ce8 100644
--- a/arch/x86/platform/efi/efi.c
+++ b/arch/x86/platform/efi/efi.c
@@ -428,7 +428,7 @@ void __init efi_reserve_boot_services(void)
* - Not within any part of the kernel
* - Not the bios reserved area
*/
- if ((start+size >= virt_to_phys(_text)
+ if ((start + size > virt_to_phys(_text)
&& start <= virt_to_phys(_end)) ||
!e820_all_mapped(start, start+size, E820_RAM) ||
memblock_is_region_reserved(start, size)) {
--
1.8.3.2
More information about the kernel-team
mailing list