NULL\r
);\r
} else if (IsListEmpty (&Udp6Service->ChildrenList)) {\r
- gBS->UninstallMultipleProtocolInterfaces (\r
- NicHandle,\r
- &gEfiUdp6ServiceBindingProtocolGuid,\r
- &Udp6Service->ServiceBinding,\r
- NULL\r
- );\r
+ Status = gBS->UninstallMultipleProtocolInterfaces (\r
+ NicHandle,\r
+ &gEfiUdp6ServiceBindingProtocolGuid,\r
+ &Udp6Service->ServiceBinding,\r
+ NULL\r
+ );\r
\r
Udp6CleanService (Udp6Service);\r
-\r
FreePool (Udp6Service);\r
-\r
- Status = EFI_SUCCESS;\r
}\r
\r
return Status;\r
//\r
// Close the Ip6 protocol on the default IpIo.\r
//\r
- gBS->CloseProtocol (\r
- Udp6Service->IpIo->ChildHandle,\r
- &gEfiIp6ProtocolGuid,\r
- gUdp6DriverBinding.DriverBindingHandle,\r
- Instance->ChildHandle\r
- );\r
+ Status = gBS->CloseProtocol (\r
+ Udp6Service->IpIo->ChildHandle,\r
+ &gEfiIp6ProtocolGuid,\r
+ gUdp6DriverBinding.DriverBindingHandle,\r
+ Instance->ChildHandle\r
+ );\r
+ if (EFI_ERROR (Status)) {\r
+ Instance->InDestroy = FALSE;\r
+ return Status;\r
+ }\r
+\r
//\r
// Close the Ip6 protocol on this instance's IpInfo.\r
//\r
- gBS->CloseProtocol (\r
- Instance->IpInfo->ChildHandle,\r
- &gEfiIp6ProtocolGuid,\r
- gUdp6DriverBinding.DriverBindingHandle,\r
- Instance->ChildHandle\r
- );\r
+ Status = gBS->CloseProtocol (\r
+ Instance->IpInfo->ChildHandle,\r
+ &gEfiIp6ProtocolGuid,\r
+ gUdp6DriverBinding.DriverBindingHandle,\r
+ Instance->ChildHandle\r
+ );\r
+ if (EFI_ERROR (Status)) {\r
+ Instance->InDestroy = FALSE;\r
+ return Status;\r
+ }\r
\r
//\r
// Uninstall the Udp6Protocol previously installed on the ChildHandle.\r