The same change has been done to Boot Service Exit with the same reason applied.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@2486
6f19259b-4bc3-4df7-8a09-
765794883524
// Module Globals\r
//\r
\r
// Module Globals\r
//\r
\r
-EFI_LOCK mBsExitLock = EFI_INITIALIZE_LOCK_VARIABLE(EFI_TPL_NOTIFY);\r
-EFI_LOCK mBsUnloadImageLock = EFI_INITIALIZE_LOCK_VARIABLE(EFI_TPL_NOTIFY);\r
-\r
LOADED_IMAGE_PRIVATE_DATA *mCurrentImage = NULL;\r
\r
LOAD_PE32_IMAGE_PRIVATE_DATA mLoadPe32PrivateData = {\r
LOADED_IMAGE_PRIVATE_DATA *mCurrentImage = NULL;\r
\r
LOAD_PE32_IMAGE_PRIVATE_DATA mLoadPe32PrivateData = {\r
--*/\r
{\r
LOADED_IMAGE_PRIVATE_DATA *Image;\r
--*/\r
{\r
LOADED_IMAGE_PRIVATE_DATA *Image;\r
- EfiAcquireLock (&mBsExitLock);\r
- \r
+ //\r
+ // Prevent possible reentrance to this function\r
+ // for the same ImageHandle\r
+ // \r
+ OldTpl = CoreRaiseTpl (EFI_TPL_NOTIFY); \r
+ \r
Image = CoreLoadedImageInfo (ImageHandle);\r
if (Image == NULL_HANDLE) {\r
Status = EFI_INVALID_PARAMETER;\r
Image = CoreLoadedImageInfo (ImageHandle);\r
if (Image == NULL_HANDLE) {\r
Status = EFI_INVALID_PARAMETER;\r
CopyMem (Image->ExitData, ExitData, Image->ExitDataSize);\r
}\r
\r
CopyMem (Image->ExitData, ExitData, Image->ExitDataSize);\r
}\r
\r
- EfiReleaseLock (&mBsExitLock);\r
+ CoreRestoreTpl (OldTpl);\r
//\r
// return to StartImage\r
//\r
//\r
// return to StartImage\r
//\r
ASSERT (FALSE);\r
Status = EFI_ACCESS_DENIED;\r
Done:\r
ASSERT (FALSE);\r
Status = EFI_ACCESS_DENIED;\r
Done:\r
- EfiReleaseLock (&mBsExitLock);\r
+ CoreRestoreTpl (OldTpl);\r
{\r
EFI_STATUS Status;\r
LOADED_IMAGE_PRIVATE_DATA *Image;\r
{\r
EFI_STATUS Status;\r
LOADED_IMAGE_PRIVATE_DATA *Image;\r
- EfiAcquireLock (&mBsUnloadImageLock);\r
- \r
+ //\r
+ // Prevent possible reentrance to this function\r
+ // for the same ImageHandle\r
+ // \r
+ OldTpl = CoreRaiseTpl (EFI_TPL_NOTIFY);\r
+ \r
Image = CoreLoadedImageInfo (ImageHandle);\r
if (Image == NULL ) {\r
//\r
Image = CoreLoadedImageInfo (ImageHandle);\r
if (Image == NULL ) {\r
//\r
- EfiReleaseLock (&mBsUnloadImageLock);\r
+ CoreRestoreTpl (OldTpl);\r