]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Universal/Network/Mtftp4Dxe/Mtftp4Driver.c
Sync the latest version from R8.
[mirror_edk2.git] / MdeModulePkg / Universal / Network / Mtftp4Dxe / Mtftp4Driver.c
index 118624951351b6f4e9890ecf8f5a9148158b9a11..f6f431de68ca8ab7fbaa8ca683b4ae49edce0551 100644 (file)
@@ -348,7 +348,7 @@ Mtftp4DriverBindingStop (
   NicHandle = NetLibGetNicHandle (Controller, &gEfiUdp4ProtocolGuid);\r
 \r
   if (NicHandle == NULL) {\r
-    return EFI_SUCCESS;\r
+    return EFI_DEVICE_ERROR;\r
   }\r
 \r
   Status = gBS->OpenProtocol (\r
@@ -370,37 +370,32 @@ Mtftp4DriverBindingStop (
     return EFI_SUCCESS;\r
   }\r
 \r
-  OldTpl             = NET_RAISE_TPL (NET_TPL_LOCK);\r
-  MtftpSb->InDestory = TRUE;\r
+  OldTpl = NET_RAISE_TPL (NET_TPL_LOCK);\r
 \r
-  while (!NetListIsEmpty (&MtftpSb->Children)) {\r
-    Instance = NET_LIST_HEAD (&MtftpSb->Children, MTFTP4_PROTOCOL, Link);\r
-    Mtftp4ServiceBindingDestroyChild (ServiceBinding, Instance->Handle);\r
-  }\r
+  if (NumberOfChildren == 0) {\r
 \r
-  if (MtftpSb->ChildrenNum != 0) {\r
-    Status = EFI_DEVICE_ERROR;\r
-    goto ON_ERROR;\r
-  }\r
+    MtftpSb->InDestory = TRUE;\r
 \r
-  Status = gBS->UninstallProtocolInterface (\r
-                  NicHandle,\r
-                  &gEfiMtftp4ServiceBindingProtocolGuid,\r
-                  ServiceBinding\r
-                  );\r
+    gBS->UninstallProtocolInterface (\r
+           NicHandle,\r
+           &gEfiMtftp4ServiceBindingProtocolGuid,\r
+           ServiceBinding\r
+           );\r
 \r
-  if (EFI_ERROR (Status)) {\r
-    goto ON_ERROR;\r
-  }\r
+    Mtftp4CleanService (MtftpSb);\r
 \r
-  Mtftp4CleanService (MtftpSb);\r
-  NetFreePool (MtftpSb);\r
+    NetFreePool (MtftpSb);\r
+  } else {\r
 \r
-  NET_RESTORE_TPL (OldTpl);\r
-  return EFI_SUCCESS;\r
+    while (!NetListIsEmpty (&MtftpSb->Children)) {\r
+      Instance = NET_LIST_HEAD (&MtftpSb->Children, MTFTP4_PROTOCOL, Link);\r
+      Mtftp4ServiceBindingDestroyChild (ServiceBinding, Instance->Handle);\r
+    }\r
 \r
-ON_ERROR:\r
-  MtftpSb->InDestory = FALSE;\r
+    if (MtftpSb->ChildrenNum != 0) {\r
+      Status = EFI_DEVICE_ERROR;\r
+    }\r
+  }\r
 \r
   NET_RESTORE_TPL (OldTpl);\r
   return Status;\r