summaryrefslogtreecommitdiff
path: root/MdeModulePkg/Core/Dxe/Hand
diff options
context:
space:
mode:
authorqwang12 <qwang12@6f19259b-4bc3-4df7-8a09-765794883524>2008-09-09 02:39:44 +0000
committerqwang12 <qwang12@6f19259b-4bc3-4df7-8a09-765794883524>2008-09-09 02:39:44 +0000
commit6c857d668cb7d2b219351be1daeec0bcd597e377 (patch)
treebe6b445bc0bec7b636adee9b27e53fd2fd3a2ae9 /MdeModulePkg/Core/Dxe/Hand
parent599979d4ceb77a61f6636402932f60973ea7f02d (diff)
downloadedk2-6c857d668cb7d2b219351be1daeec0bcd597e377.zip
edk2-6c857d668cb7d2b219351be1daeec0bcd597e377.tar.gz
edk2-6c857d668cb7d2b219351be1daeec0bcd597e377.tar.bz2
1) Update some comment.
2) Add in handle for the out_of_resource cases 3) Add in Done label to clean up the code. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@5853 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'MdeModulePkg/Core/Dxe/Hand')
-rw-r--r--MdeModulePkg/Core/Dxe/Hand/DriverSupport.c7
-rw-r--r--MdeModulePkg/Core/Dxe/Hand/Notify.c33
2 files changed, 26 insertions, 14 deletions
diff --git a/MdeModulePkg/Core/Dxe/Hand/DriverSupport.c b/MdeModulePkg/Core/Dxe/Hand/DriverSupport.c
index 9db124c..829215b 100644
--- a/MdeModulePkg/Core/Dxe/Hand/DriverSupport.c
+++ b/MdeModulePkg/Core/Dxe/Hand/DriverSupport.c
@@ -73,6 +73,10 @@ CoreConnectController (
AlignedRemainingDevicePath = NULL;
if (RemainingDevicePath != NULL) {
AlignedRemainingDevicePath = DuplicateDevicePath (RemainingDevicePath);
+
+ if (AlignedRemainingDevicePath == NULL) {
+ return EFI_OUT_OF_RESOURCES;
+ }
}
//
@@ -138,6 +142,9 @@ CoreConnectController (
// Allocate a handle buffer for ControllerHandle's children
//
ChildHandleBuffer = AllocatePool (ChildHandleCount * sizeof(EFI_HANDLE));
+ if (ChildHandleBuffer == NULL) {
+ return EFI_OUT_OF_RESOURCES;
+ }
//
// Fill in a handle buffer with ControllerHandle's children
diff --git a/MdeModulePkg/Core/Dxe/Hand/Notify.c b/MdeModulePkg/Core/Dxe/Hand/Notify.c
index 5f4ae19..407e3ff 100644
--- a/MdeModulePkg/Core/Dxe/Hand/Notify.c
+++ b/MdeModulePkg/Core/Dxe/Hand/Notify.c
@@ -1,5 +1,5 @@
/** @file
- UEFI notify infrastructure
+ Support functions for UEFI protocol notification infrastructure.
Copyright (c) 2006 - 2008, Intel Corporation. <BR>
All rights reserved. This program and the accompanying materials
@@ -213,8 +213,8 @@ CoreReinstallProtocolInterface (
//
Prot = CoreFindProtocolInterface (UserHandle, Protocol, OldInterface);
if (Prot == NULL) {
- CoreReleaseProtocolLock ();
- return EFI_NOT_FOUND;
+ Status = EFI_NOT_FOUND;
+ goto Done;
}
//
@@ -228,8 +228,7 @@ CoreReinstallProtocolInterface (
//
// One or more drivers refused to release, so return the error
//
- CoreReleaseProtocolLock ();
- return Status;
+ goto Done;
}
//
@@ -238,8 +237,8 @@ CoreReinstallProtocolInterface (
Prot = CoreRemoveInterfaceFromProtocol (Handle, Protocol, OldInterface);
if (Prot == NULL) {
- CoreReleaseProtocolLock ();
- return EFI_NOT_FOUND;
+ Status = EFI_NOT_FOUND;
+ goto Done;
}
ProtEntry = Prot->Protocol;
@@ -265,12 +264,15 @@ CoreReinstallProtocolInterface (
// Release the lock and connect all drivers to UserHandle
//
CoreReleaseProtocolLock ();
- Status = CoreConnectController (
- UserHandle,
- NULL,
- NULL,
- TRUE
- );
+ //
+ // Return code is ignored on purpose.
+ //
+ CoreConnectController (
+ UserHandle,
+ NULL,
+ NULL,
+ TRUE
+ );
CoreAcquireProtocolLock ();
//
@@ -280,5 +282,8 @@ CoreReinstallProtocolInterface (
CoreReleaseProtocolLock ();
- return EFI_SUCCESS;
+ Status = EFI_SUCCESS;
+
+Done:
+ return Status;
}