diff --git a/NetworkPkg/Dhcp4Dxe/Dhcp4Impl.c b/NetworkPkg/Dhcp4Dxe/Dhcp4Impl.c index d9ab76cae39..ddf9a3645bf 100644 --- a/NetworkPkg/Dhcp4Dxe/Dhcp4Impl.c +++ b/NetworkPkg/Dhcp4Dxe/Dhcp4Impl.c @@ -824,7 +824,15 @@ EfiDhcp4Start ( if (CompletionEvent == NULL) { while (DhcpSb->IoStatus == EFI_ALREADY_STARTED) { - DhcpSb->UdpIo->Protocol.Udp4->Poll (DhcpSb->UdpIo->Protocol.Udp4); + // MU_CHANGE [BEGIN] - Add Udp4 Polling break support + Status = DhcpSb->UdpIo->Protocol.Udp4->Poll (DhcpSb->UdpIo->Protocol.Udp4); + if (EFI_ERROR (Status)) { + // Break out if the NIC goes away or poll fails so we don't spin forever. + DhcpSb->IoStatus = Status; + break; + } + + // MU_CHANGE [END] - Add Udp4 Polling break support } return DhcpSb->IoStatus;