summaryrefslogtreecommitdiffstats
path: root/drivers/firmware
diff options
context:
space:
mode:
authorIngo Molnar <mingo@kernel.org>2014-04-11 04:25:28 -0400
committerIngo Molnar <mingo@kernel.org>2014-04-11 04:25:28 -0400
commit3151b942badd059431eff93833cc1e957195b53b (patch)
tree36aeeed4fecefcd60343dc05e5de512c497bdc68 /drivers/firmware
parentf704a7d7f1d815621cb4c47f7a94787e1bd7c27c (diff)
parent47514c996fac5e6f13ef3a4c5e23f1c5cffabb7b (diff)
Merge tag 'efi-urgent' of git://git.kernel.org/pub/scm/linux/kernel/git/mfleming/efi into x86/urgent
Pull EFI fixes from Matt Fleming: "* Fix EFI boot regression introduced during the merge window where the firmware was reading random values from the stack because we were passing a pointer to the wrong object type. * Kernel corruption has been reported when booting with the EFI boot stub which was tracked down to setting a bogus value for bp->hdr.code32_start, resulting in corruption during relocation. * Olivier Martin reported that the wrong file handles were being passed to efi_file_(read|close), which works for x86 by luck due to the way that the FAT driver is implemented, but doesn't work on ARM." Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'drivers/firmware')
-rw-r--r--drivers/firmware/efi/efi-stub-helper.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/drivers/firmware/efi/efi-stub-helper.c b/drivers/firmware/efi/efi-stub-helper.c
index ff50aeebf0d9..2c41eaece2c1 100644
--- a/drivers/firmware/efi/efi-stub-helper.c
+++ b/drivers/firmware/efi/efi-stub-helper.c
@@ -397,7 +397,7 @@ static efi_status_t handle_cmdline_files(efi_system_table_t *sys_table_arg,
397 else 397 else
398 chunksize = size; 398 chunksize = size;
399 399
400 status = efi_file_read(fh, files[j].handle, 400 status = efi_file_read(files[j].handle,
401 &chunksize, 401 &chunksize,
402 (void *)addr); 402 (void *)addr);
403 if (status != EFI_SUCCESS) { 403 if (status != EFI_SUCCESS) {
@@ -408,7 +408,7 @@ static efi_status_t handle_cmdline_files(efi_system_table_t *sys_table_arg,
408 size -= chunksize; 408 size -= chunksize;
409 } 409 }
410 410
411 efi_file_close(fh, files[j].handle); 411 efi_file_close(files[j].handle);
412 } 412 }
413 413
414 } 414 }
@@ -425,7 +425,7 @@ free_file_total:
425 425
426close_handles: 426close_handles:
427 for (k = j; k < i; k++) 427 for (k = j; k < i; k++)
428 efi_file_close(fh, files[k].handle); 428 efi_file_close(files[k].handle);
429free_files: 429free_files:
430 efi_call_early(free_pool, files); 430 efi_call_early(free_pool, files);
431fail: 431fail: