diff --git a/NetworkPkg/SnpDxe/Snp.c b/NetworkPkg/SnpDxe/Snp.c index 95361c3cd3..09d6c8fc99 100644 --- a/NetworkPkg/SnpDxe/Snp.c +++ b/NetworkPkg/SnpDxe/Snp.c @@ -32,6 +32,10 @@ SnpNotifyExitBootServices ( // PxeShutdown (Snp); PxeStop (Snp); + + // Since BeforeExitBootServices is run on each call, close event + // to prevent reentry. + gBS->CloseEvent (Event); } /** @@ -655,7 +659,7 @@ SimpleNetworkDriverStart ( TPL_CALLBACK, SnpNotifyExitBootServices, Snp, - &gEfiEventExitBootServicesGuid, + &gEfiEventBeforeExitBootServicesGuid, &Snp->ExitBootServicesEvent ); if (EFI_ERROR (Status)) { diff --git a/NetworkPkg/SnpDxe/SnpDxe.inf b/NetworkPkg/SnpDxe/SnpDxe.inf index d16f1888b3..e1afd46dfe 100644 --- a/NetworkPkg/SnpDxe/SnpDxe.inf +++ b/NetworkPkg/SnpDxe/SnpDxe.inf @@ -65,7 +65,7 @@ NetLib [Guids] - gEfiEventExitBootServicesGuid ## SOMETIMES_CONSUMES ## Event + gEfiEventBeforeExitBootServicesGuid ## SOMETIMES_CONSUMES ## Event [Protocols] gEfiSimpleNetworkProtocolGuid ## BY_START