diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2015-02-21 10:41:29 -0800 | 
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2015-02-21 10:41:29 -0800 | 
| commit | 5fbe4c224ce3e2e62bd487158dfd1e89f9ae3e11 (patch) | |
| tree | aee3c146fb7dd3dd10cb71f44affa9c680481f08 /drivers/firmware/efi/libstub | |
| parent | e2defd02717ebc54ae2f4862271a3093665b426a (diff) | |
| parent | 570e1aa84c376ff39809442f09c7606ddf62cfd1 (diff) | |
Merge branch 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull misc x86 fixes from Ingo Molnar:
 "This contains:
   - EFI fixes
   - a boot printout fix
   - ASLR/kASLR fixes
   - intel microcode driver fixes
   - other misc fixes
  Most of the linecount comes from an EFI revert"
* 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
  x86/mm/ASLR: Avoid PAGE_SIZE redefinition for UML subarch
  x86/microcode/intel: Handle truncated microcode images more robustly
  x86/microcode/intel: Guard against stack overflow in the loader
  x86, mm/ASLR: Fix stack randomization on 64-bit systems
  x86/mm/init: Fix incorrect page size in init_memory_mapping() printks
  x86/mm/ASLR: Propagate base load address calculation
  Documentation/x86: Fix path in zero-page.txt
  x86/apic: Fix the devicetree build in certain configs
  Revert "efi/libstub: Call get_memory_map() to obtain map and desc sizes"
  x86/efi: Avoid triple faults during EFI mixed mode calls
Diffstat (limited to 'drivers/firmware/efi/libstub')
| -rw-r--r-- | drivers/firmware/efi/libstub/efi-stub-helper.c | 16 | 
1 files changed, 6 insertions, 10 deletions
| diff --git a/drivers/firmware/efi/libstub/efi-stub-helper.c b/drivers/firmware/efi/libstub/efi-stub-helper.c index af5d63c7cc53..2fe195002021 100644 --- a/drivers/firmware/efi/libstub/efi-stub-helper.c +++ b/drivers/firmware/efi/libstub/efi-stub-helper.c @@ -75,29 +75,25 @@ efi_status_t efi_get_memory_map(efi_system_table_t *sys_table_arg,  	unsigned long key;  	u32 desc_version; -	*map_size = 0; -	*desc_size = 0; -	key = 0; -	status = efi_call_early(get_memory_map, map_size, NULL, -				&key, desc_size, &desc_version); -	if (status != EFI_BUFFER_TOO_SMALL) -		return EFI_LOAD_ERROR; - +	*map_size = sizeof(*m) * 32; +again:  	/*  	 * Add an additional efi_memory_desc_t because we're doing an  	 * allocation which may be in a new descriptor region.  	 */ -	*map_size += *desc_size; +	*map_size += sizeof(*m);  	status = efi_call_early(allocate_pool, EFI_LOADER_DATA,  				*map_size, (void **)&m);  	if (status != EFI_SUCCESS)  		goto fail; +	*desc_size = 0; +	key = 0;  	status = efi_call_early(get_memory_map, map_size, m,  				&key, desc_size, &desc_version);  	if (status == EFI_BUFFER_TOO_SMALL) {  		efi_call_early(free_pool, m); -		return EFI_LOAD_ERROR; +		goto again;  	}  	if (status != EFI_SUCCESS) | 
