From 0d129450c2c436e047f8ee929db63224e643cc30 Mon Sep 17 00:00:00 2001 From: Oliver Smith-Denny Date: Tue, 8 Oct 2024 10:12:29 -0700 Subject: [PATCH] NetworkPkg: Restore TPL Before Return This patch fixes a few instances of error cases in NetworkPkg returning after a RaiseTPL call without restoring the TPL first. Signed-off-by: Oliver Smith-Denny --- NetworkPkg/Ip6Dxe/Ip6Impl.c | 3 ++- NetworkPkg/SnpDxe/Get_status.c | 4 ++-- NetworkPkg/SnpDxe/Transmit.c | 4 ++-- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/NetworkPkg/Ip6Dxe/Ip6Impl.c b/NetworkPkg/Ip6Dxe/Ip6Impl.c index a4bfd0f9a3..5fbb81cd2a 100644 --- a/NetworkPkg/Ip6Dxe/Ip6Impl.c +++ b/NetworkPkg/Ip6Dxe/Ip6Impl.c @@ -61,7 +61,6 @@ EfiIp6GetModeData ( return EFI_INVALID_PARAMETER; } - OldTpl = gBS->RaiseTPL (TPL_CALLBACK); IpInstance = IP6_INSTANCE_FROM_PROTOCOL (This); IpSb = IpInstance->Service; IpIf = IpInstance->Interface; @@ -70,6 +69,8 @@ EfiIp6GetModeData ( return EFI_INVALID_PARAMETER; } + OldTpl = gBS->RaiseTPL (TPL_CALLBACK); + if (Ip6ModeData != NULL) { // // IsStarted is "whether the EfiIp6Configure has been called". diff --git a/NetworkPkg/SnpDxe/Get_status.c b/NetworkPkg/SnpDxe/Get_status.c index 14b678fd36..2097fbcbaa 100644 --- a/NetworkPkg/SnpDxe/Get_status.c +++ b/NetworkPkg/SnpDxe/Get_status.c @@ -216,12 +216,12 @@ SnpUndi32GetStatus ( Snp = EFI_SIMPLE_NETWORK_DEV_FROM_THIS (This); - OldTpl = gBS->RaiseTPL (TPL_CALLBACK); - if (Snp == NULL) { return EFI_DEVICE_ERROR; } + OldTpl = gBS->RaiseTPL (TPL_CALLBACK); + switch (Snp->Mode.State) { case EfiSimpleNetworkInitialized: break; diff --git a/NetworkPkg/SnpDxe/Transmit.c b/NetworkPkg/SnpDxe/Transmit.c index e2c7467b86..7947cde436 100644 --- a/NetworkPkg/SnpDxe/Transmit.c +++ b/NetworkPkg/SnpDxe/Transmit.c @@ -287,12 +287,12 @@ SnpUndi32Transmit ( Snp = EFI_SIMPLE_NETWORK_DEV_FROM_THIS (This); - OldTpl = gBS->RaiseTPL (TPL_CALLBACK); - if (Snp == NULL) { return EFI_DEVICE_ERROR; } + OldTpl = gBS->RaiseTPL (TPL_CALLBACK); + switch (Snp->Mode.State) { case EfiSimpleNetworkInitialized: break;