Update to newer git snapshot, synced with qemu.git

Signed-off-by: Cole Robinson <crobinso@redhat.com>
This commit is contained in:
Cole Robinson 2020-09-15 19:27:41 -04:00
parent 60ee4da580
commit 257ca1593f
3 changed files with 8 additions and 70 deletions

View File

@ -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;
}

View File

@ -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

View File

@ -1 +1 @@
SHA512 (ipxe-20190125-git36a4c85f.tar.xz) = d9c9e56ddffa9e47f422d88779530761f2fc60a6866d6817df92e01eba535c54e56995573df67281faef049d319a5bcebfc47e80f19c04239abbc6cadb18d149
SHA512 (ipxe-20200823-git4bd064de.tar.xz) = 70c040352a5ab54e516df2f347128ff539bb7b689d3b26224c5ac073ac96b3107262beacfa8e0c604357f50bf7cc6fec86741a3d477d60b94dceb61d2365895c