Update to newer git snapshot, synced with qemu.git
Signed-off-by: Cole Robinson <crobinso@redhat.com>
This commit is contained in:
parent
60ee4da580
commit
257ca1593f
@ -1,63 +0,0 @@
|
||||
From 82a962066fb5a41b6dc50476f8676b559ac1edcc Mon Sep 17 00:00:00 2001
|
||||
From: Michael Brown <mcb30@ipxe.org>
|
||||
Date: Tue, 30 Jun 2020 16:32:59 +0100
|
||||
Subject: [PATCH] [efi] Raise TPL during driver entry point
|
||||
|
||||
As per commit c89a446 ("[efi] Run at TPL_CALLBACK to protect against
|
||||
UEFI timers") we expect to run at TPL_CALLBACK almost all of the time.
|
||||
Various code paths rely on this assumption. Code paths that need to
|
||||
temporarily lower the TPL (e.g. for entropy gathering) will restore it
|
||||
to TPL_CALLBACK.
|
||||
|
||||
The entropy gathering code will be run during DRBG initialisation,
|
||||
which happens during the call to startup(). In the case of iPXE
|
||||
compiled as an EFI application this code will run within the scope of
|
||||
efi_snp_claim() and so will execute at TPL_CALLBACK as expected.
|
||||
|
||||
In the case of iPXE compiled as an EFI driver the code will
|
||||
incorrectly run at TPL_APPLICATION since there is nothing within the
|
||||
EFI driver entry point that raises (and restores) the TPL. The net
|
||||
effect is that a build that includes the entropy-gathering code
|
||||
(e.g. a build with HTTPS enabled) will return from the driver entry
|
||||
point at TPL_CALLBACK, which causes a system lockup.
|
||||
|
||||
Fix by raising and restoring the TPL within the EFI driver entry
|
||||
point.
|
||||
|
||||
Debugged-by: Ignat Korchagin <ignat@cloudflare.com>
|
||||
Signed-off-by: Michael Brown <mcb30@ipxe.org>
|
||||
(cherry picked from commit 2ae5d4338661b65c63eb5cb1a96e5b803fe7d620)
|
||||
---
|
||||
src/interface/efi/efidrvprefix.c | 9 +++++++++
|
||||
1 file changed, 9 insertions(+)
|
||||
|
||||
diff --git a/src/interface/efi/efidrvprefix.c b/src/interface/efi/efidrvprefix.c
|
||||
index 4fbb19ff..a8ef6673 100644
|
||||
--- a/src/interface/efi/efidrvprefix.c
|
||||
+++ b/src/interface/efi/efidrvprefix.c
|
||||
@@ -34,16 +34,25 @@ FILE_LICENCE ( GPL2_OR_LATER );
|
||||
*/
|
||||
EFI_STATUS EFIAPI _efidrv_start ( EFI_HANDLE image_handle,
|
||||
EFI_SYSTEM_TABLE *systab ) {
|
||||
+ EFI_BOOT_SERVICES *bs;
|
||||
+ EFI_TPL saved_tpl;
|
||||
EFI_STATUS efirc;
|
||||
|
||||
/* Initialise EFI environment */
|
||||
if ( ( efirc = efi_init ( image_handle, systab ) ) != 0 )
|
||||
return efirc;
|
||||
|
||||
+ /* Raise TPL */
|
||||
+ bs = efi_systab->BootServices;
|
||||
+ saved_tpl = bs->RaiseTPL ( TPL_CALLBACK );
|
||||
+
|
||||
/* Initialise iPXE environment */
|
||||
initialise();
|
||||
startup();
|
||||
|
||||
+ /* Restore TPL */
|
||||
+ bs->RestoreTPL ( saved_tpl );
|
||||
+
|
||||
return 0;
|
||||
}
|
||||
|
13
ipxe.spec
13
ipxe.spec
@ -48,12 +48,12 @@
|
||||
#
|
||||
# And then change these two:
|
||||
|
||||
%global hash 36a4c85f
|
||||
%global date 20190125
|
||||
%global hash 4bd064de
|
||||
%global date 20200823
|
||||
|
||||
Name: ipxe
|
||||
Version: %{date}
|
||||
Release: 9.git%{hash}%{?dist}
|
||||
Release: 1.git%{hash}%{?dist}
|
||||
Summary: A network boot loader
|
||||
|
||||
License: GPLv2 with additional permissions and BSD
|
||||
@ -65,7 +65,6 @@ Source0: %{name}-%{version}-git%{hash}.tar.xz
|
||||
# Sent upstream: http://lists.ipxe.org/pipermail/ipxe-devel/2015-November/004494.html
|
||||
Patch0001: 0001-build-customize-configuration.patch
|
||||
Patch0002: 0002-Use-spec-compliant-timeouts.patch
|
||||
Patch0003: 0003-efi-Raise-TPL-during-driver-entry-point.patch
|
||||
|
||||
%ifarch %{buildarches}
|
||||
BuildRequires: perl-interpreter
|
||||
@ -151,8 +150,6 @@ rm -rf drivers/net/ath/ath9k
|
||||
make_ipxe() {
|
||||
make %{?_smp_mflags} \
|
||||
NO_WERROR=1 V=1 \
|
||||
EXTRA_CFLAGS="-Wno-address-of-packed-member -Wno-enum-conversion -Wno-format-overflow" \
|
||||
EXTRA_LDFLAGS="-z muldefs" \
|
||||
GITVERSION=%{hash} \
|
||||
%if 0%{?cross}
|
||||
CROSS_COMPILE=x86_64-linux-gnu- \
|
||||
@ -245,6 +242,10 @@ done
|
||||
%endif
|
||||
|
||||
%changelog
|
||||
* Tue Sep 15 2020 Cole Robinson <aintdiscole@gmail.com> - 20200823-1.git4bd064de.git
|
||||
- Update to newer git snapshot, synced with qemu.git
|
||||
- Re-enable HTTPS support, with edk2 fix included (bz 1820836)
|
||||
|
||||
* Fri Sep 04 2020 Merlin Mathesius <mmathesi@redhat.com> - 20190125-9.git36a4c85f
|
||||
- Workaound fatal GCC 9 compilation/link errors
|
||||
- Fix conditionals for perl BuildRequires
|
||||
|
2
sources
2
sources
@ -1 +1 @@
|
||||
SHA512 (ipxe-20190125-git36a4c85f.tar.xz) = d9c9e56ddffa9e47f422d88779530761f2fc60a6866d6817df92e01eba535c54e56995573df67281faef049d319a5bcebfc47e80f19c04239abbc6cadb18d149
|
||||
SHA512 (ipxe-20200823-git4bd064de.tar.xz) = 70c040352a5ab54e516df2f347128ff539bb7b689d3b26224c5ac073ac96b3107262beacfa8e0c604357f50bf7cc6fec86741a3d477d60b94dceb61d2365895c
|
||||
|
Loading…
Reference in New Issue
Block a user