diff options
author | Josh Boyer <jwboyer@redhat.com> | 2013-04-24 11:21:48 -0400 |
---|---|---|
committer | Josh Boyer <jwboyer@redhat.com> | 2013-04-24 11:23:10 -0400 |
commit | 92b8963a311b90d1bb6a83ba2c028a51a22132c0 (patch) | |
tree | ae9478086621a854e3e7bf0943fb4f5c16b04346 | |
parent | c96f99a3330e432c3ab7169e59d74acedec19639 (diff) | |
download | kernel-92b8963a311b90d1bb6a83ba2c028a51a22132c0.tar.gz kernel-92b8963a311b90d1bb6a83ba2c028a51a22132c0.tar.xz kernel-92b8963a311b90d1bb6a83ba2c028a51a22132c0.zip |
Add patch to fix EFI boot on Macs (rhbz 953447)
-rw-r--r-- | efi-Check-EFI-revision-in-setup_efi_vars.patch | 35 | ||||
-rw-r--r-- | kernel.spec | 11 |
2 files changed, 45 insertions, 1 deletions
diff --git a/efi-Check-EFI-revision-in-setup_efi_vars.patch b/efi-Check-EFI-revision-in-setup_efi_vars.patch new file mode 100644 index 000000000..3e69cc6a9 --- /dev/null +++ b/efi-Check-EFI-revision-in-setup_efi_vars.patch @@ -0,0 +1,35 @@ +From 4b367720588ea97a32dc6393ac8975d6111ba72b Mon Sep 17 00:00:00 2001 +From: Josh Boyer <jwboyer@redhat.com> +Date: Wed, 24 Apr 2013 10:30:02 -0400 +Subject: [PATCH] efi: Check EFI revision in setup_efi_vars + +We need to check the runtime sys_table for the EFI version the firmware +specifies instead of just checking for a NULL QueryVariableInfo. Older +implementations of EFI don't have QueryVariableInfo but the runtime is +a smaller structure, so the pointer to it may be pointing off into garbage. + +This is apparently the case with several Apple firmwares that support EFI +1.10, and the current check causes them to no longer boot. Fix based on +a suggestion from Matthew Garrett. + +Signed-off-by: Josh Boyer <jwboyer@redhat.com> +--- + arch/x86/boot/compressed/eboot.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/arch/x86/boot/compressed/eboot.c b/arch/x86/boot/compressed/eboot.c +index 8615f75..4060c8d 100644 +--- a/arch/x86/boot/compressed/eboot.c ++++ b/arch/x86/boot/compressed/eboot.c +@@ -258,7 +258,7 @@ static efi_status_t setup_efi_vars(struct boot_params *params) + u64 store_size, remaining_size, var_size; + efi_status_t status; + +- if (!sys_table->runtime->query_variable_info) ++ if (sys_table->runtime->hdr.revision < EFI_2_00_SYSTEM_TABLE_REVISION) + return EFI_UNSUPPORTED; + + data = (struct setup_data *)(unsigned long)params->hdr.setup_data; +-- +1.8.1.4 + diff --git a/kernel.spec b/kernel.spec index 9271a03f3..7ea5d7901 100644 --- a/kernel.spec +++ b/kernel.spec @@ -62,7 +62,7 @@ Summary: The Linux kernel # For non-released -rc kernels, this will be appended after the rcX and # gitX tags, so a 3 here would become part of release "0.rcX.gitX.3" # -%global baserelease 1 +%global baserelease 2 %global fedora_build %{baserelease} # base_sublevel is the kernel version we're starting with and patching @@ -755,6 +755,9 @@ Patch25011: iwlwifi-fix-freeing-uninitialized-pointer.patch Patch25012: events-protect-access-via-task-subsys-state-check.patch +#rhbz 953447 +Patch25013: efi-Check-EFI-revision-in-setup_efi_vars.patch + # END OF PATCH DEFINITIONS %endif @@ -1459,6 +1462,9 @@ ApplyPatch iwlwifi-fix-freeing-uninitialized-pointer.patch ApplyPatch events-protect-access-via-task-subsys-state-check.patch +#rhbz 953447 +ApplyPatch efi-Check-EFI-revision-in-setup_efi_vars.patch + # END OF PATCH APPLICATIONS %endif @@ -2292,6 +2298,9 @@ fi # ||----w | # || || %changelog +* Wed Apr 24 2013 Josh Boyer <jwboyer@redhat.com> +- Add patch to fix EFI boot on Macs (rhbz 953447) + * Mon Apr 22 2013 Justin M. Forbes <jforbes@redhat.com> - 3.9.0-0.rc8.git0.1 - Linux v3.9-rc8 - Disable debugging options. |