diff options
author | Ingo Molnar <mingo@kernel.org> | 2014-04-11 04:25:28 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@kernel.org> | 2014-04-11 04:25:28 -0400 |
commit | 3151b942badd059431eff93833cc1e957195b53b (patch) | |
tree | 36aeeed4fecefcd60343dc05e5de512c497bdc68 /drivers/firmware | |
parent | f704a7d7f1d815621cb4c47f7a94787e1bd7c27c (diff) | |
parent | 47514c996fac5e6f13ef3a4c5e23f1c5cffabb7b (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.c | 6 |
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 | ||
426 | close_handles: | 426 | close_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); |
429 | free_files: | 429 | free_files: |
430 | efi_call_early(free_pool, files); | 430 | efi_call_early(free_pool, files); |
431 | fail: | 431 | fail: |