Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-12-SP1:GA
xen.787
556d9718-efi-fix-allocation-problems-if-ExitBoo...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 556d9718-efi-fix-allocation-problems-if-ExitBootServices-fails.patch of Package xen.787
# Commit 8a753b3f1cf5e4714974196df9517849bf174324 # Date 2015-06-02 13:44:24 +0200 # Author Ross Lagerwall <ross.lagerwall@citrix.com> # Committer Jan Beulich <jbeulich@suse.com> efi: fix allocation problems if ExitBootServices() fails If calling ExitBootServices() fails, the required memory map size may have increased. When initially allocating the memory map, allocate a slightly larger buffer (by an arbitrary 8 entries) to fix this. The ARM code path was already allocating a larger buffer than required, so this moves the code to be common for all architectures. This was seen on the following machine when using the iscsidxe UEFI driver. The machine would consistently fail the first call to ExitBootServices(). System Information Manufacturer: Supermicro Product Name: X10SLE-F/HF BIOS Information Vendor: American Megatrends Inc. Version: 2.00 Release Date: 04/24/2014 Signed-off-by: Ross Lagerwall <ross.lagerwall@citrix.com> Acked-by: Jan Beulich <jbeulich@suse.com> Reviewed-by: Roy Franz <roy.franz@linaro.org> Acked-by: Ian Campbell <ian.campbell@citrix.com> # Commit 4c94684bb7c20ff01d03fb1f22c03cc0c2fc417b # Date 2015-06-11 14:47:54 +0200 # Author Jan Beulich <jbeulich@suse.com> # Committer Jan Beulich <jbeulich@suse.com> EFI: map allocation size must be set to zero Commit 8a753b3f1c ("efi: fix allocation problems if ExitBootServices() fails") replaced the use of a static (and hence zero-initialized) variable by an automatic (and hence uninitialized) one. Also drop the variable introduced by that commit in favor of re-using another available and suitable one. Signed-off-by: Jan Beulich <jbeulich@suse.com> Acked-by: Ross Lagerwall <ross.lagerwall@citrix.com> Acked-by: Ian Campbell <ian.campbell@citrix.com> --- a/xen/arch/x86/efi/boot.c +++ b/xen/arch/x86/efi/boot.c @@ -1380,9 +1380,11 @@ efi_start(EFI_HANDLE ImageHandle, EFI_SY } } - efi_bs->GetMemoryMap(&efi_memmap_size, NULL, &map_key, + info_size = 0; + efi_bs->GetMemoryMap(&info_size, NULL, &map_key, &efi_mdesc_size, &mdesc_ver); - mbi.mem_upper -= efi_memmap_size; + info_size += 8 * efi_mdesc_size; + mbi.mem_upper -= info_size; mbi.mem_upper &= -__alignof__(EFI_MEMORY_DESCRIPTOR); if ( mbi.mem_upper < xen_phys_start ) blexit(L"Out of static memory"); @@ -1391,6 +1393,7 @@ efi_start(EFI_HANDLE ImageHandle, EFI_SY { struct e820entry *e; + efi_memmap_size = info_size; status = efi_bs->GetMemoryMap(&efi_memmap_size, efi_memmap, &map_key, &efi_mdesc_size, &mdesc_ver); if ( EFI_ERROR(status) )
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor