MdeModulePkg: Fix DHCP4 driver hang issue in some case.
authorWu Jiaxin <jiaxin.wu@intel.com>
Thu, 18 Jun 2015 00:48:35 +0000 (00:48 +0000)
committerjiaxinwu <jiaxinwu@Edk2>
Thu, 18 Jun 2015 00:48:35 +0000 (00:48 +0000)
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Wu Jiaxin <jiaxin.wu@intel.com>
Reviewed-by: Ye Ting <ting.ye@intel.com>
Reviewed-by: Fu Siyuan <siyuan.fu@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@17653 6f19259b-4bc3-4df7-8a09-765794883524

MdeModulePkg/Universal/Network/Dhcp4Dxe/Dhcp4Driver.c

index d1bba3022a04abd31a0c275e6b20dac9f6941baf..9253df2b3f08eb1ddf1e2473f5cdc008692da70e 100644 (file)
@@ -1,6 +1,6 @@
 /** @file\r
 \r
-Copyright (c) 2006 - 2012, Intel Corporation. All rights reserved.<BR>\r
+Copyright (c) 2006 - 2015, Intel Corporation. All rights reserved.<BR>\r
 This program and the accompanying materials\r
 are licensed and made available under the terms and conditions of the BSD License\r
 which accompanies this distribution.  The full text of the license may be found at\r
@@ -718,6 +718,19 @@ Dhcp4ServiceBindingDestroyChild (
   RemoveEntryList (&Instance->Link);\r
   DhcpSb->NumChildren--;\r
 \r
+  if (Instance->UdpIo != NULL) {\r
+    UdpIoCleanIo (Instance->UdpIo);\r
+    gBS->CloseProtocol (\r
+           Instance->UdpIo->UdpHandle,\r
+           &gEfiUdp4ProtocolGuid,\r
+           Instance->Service->Image,\r
+           Instance->Handle\r
+           );\r
+    UdpIoFreeIo (Instance->UdpIo);\r
+    Instance->UdpIo = NULL;\r
+    Instance->Token = NULL;\r
+  }\r
+\r
   gBS->RestoreTPL (OldTpl);\r
 \r
   FreePool (Instance);\r