From aa6c4e3c99a165f6ab5bf27b460c69018c29bb7b Mon Sep 17 00:00:00 2001 From: vanjeff Date: Thu, 3 Apr 2008 05:51:57 +0000 Subject: [PATCH] fixed bug in stop() function, that made stop() failure. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@4986 6f19259b-4bc3-4df7-8a09-765794883524 --- .../Network/UefiPxeBcDxe/PxeBcDriver.c | 26 +++++++++++++++---- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/MdeModulePkg/Universal/Network/UefiPxeBcDxe/PxeBcDriver.c b/MdeModulePkg/Universal/Network/UefiPxeBcDxe/PxeBcDriver.c index c8ee1f7266..9d26b135f5 100644 --- a/MdeModulePkg/Universal/Network/UefiPxeBcDxe/PxeBcDriver.c +++ b/MdeModulePkg/Universal/Network/UefiPxeBcDxe/PxeBcDriver.c @@ -444,19 +444,22 @@ PxeBcDriverBindingStop ( EFI_STATUS Status; NicHandle = NetLibGetNicHandle (ControllerHandle, &gEfiArpProtocolGuid); - if (NicHandle == NULL) { - NicHandle = NetLibGetNicHandle (ControllerHandle, &gEfiDhcp4ProtocolGuid); if (NicHandle == NULL) { - - NicHandle = NetLibGetNicHandle (ControllerHandle, &gEfiMtftp4ProtocolGuid); + NicHandle = NetLibGetNicHandle (ControllerHandle, &gEfiIp4ProtocolGuid); if (NicHandle == NULL) { + NicHandle = NetLibGetNicHandle (ControllerHandle, &gEfiUdp4ProtocolGuid); - return EFI_DEVICE_ERROR; + if (NicHandle == NULL) { + NicHandle = NetLibGetNicHandle (ControllerHandle, &gEfiMtftp4ProtocolGuid); + if (NicHandle == NULL) { + return EFI_DEVICE_ERROR; + } + } } } } @@ -526,6 +529,19 @@ PxeBcDriverBindingStop ( Private->Mtftp4Child ); + gBS->CloseProtocol ( + Private->Ip4Child, + &gEfiIp4ProtocolGuid, + This->DriverBindingHandle, + NicHandle + ); + NetLibDestroyServiceChild ( + NicHandle, + This->DriverBindingHandle, + &gEfiIp4ServiceBindingProtocolGuid, + Private->Ip4Child + ); + gBS->CloseProtocol ( Private->ArpChild, &gEfiArpProtocolGuid,