diff options
author | hhuan13 <hhuan13@6f19259b-4bc3-4df7-8a09-765794883524> | 2010-03-01 04:29:21 +0000 |
---|---|---|
committer | hhuan13 <hhuan13@6f19259b-4bc3-4df7-8a09-765794883524> | 2010-03-01 04:29:21 +0000 |
commit | 3c5963cf299e0abd4c2ce7156b171fa66546dc85 (patch) | |
tree | 4f7501ad827b58781787b952d936406c128f07da /MdeModulePkg/Core/PiSmmCore/PiSmmIpl.c | |
parent | 26a76fbcb2762826523bba325400e302bf346859 (diff) | |
download | edk2-3c5963cf299e0abd4c2ce7156b171fa66546dc85.tar.gz edk2-3c5963cf299e0abd4c2ce7156b171fa66546dc85.tar.bz2 edk2-3c5963cf299e0abd4c2ce7156b171fa66546dc85.zip |
Update PiSmmCore:
1. Update PiSmmIpl.c DoCommunicate() to prevent exception in case call SmiManage directly if SMRAM is closed or locked. That case causes exception.
2. Update PiSmmCore.c SmmEntryPoint(). It is not required to save/restore InSmm. Because SMM is non-reentrant.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@10131 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'MdeModulePkg/Core/PiSmmCore/PiSmmIpl.c')
-rw-r--r-- | MdeModulePkg/Core/PiSmmCore/PiSmmIpl.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/MdeModulePkg/Core/PiSmmCore/PiSmmIpl.c b/MdeModulePkg/Core/PiSmmCore/PiSmmIpl.c index c3c2afaec8..e372e7ecf1 100644 --- a/MdeModulePkg/Core/PiSmmCore/PiSmmIpl.c +++ b/MdeModulePkg/Core/PiSmmCore/PiSmmIpl.c @@ -398,6 +398,13 @@ SmmCommunicationCommunicate ( }
//
+ // Don't allow call SmiManage() directly when SMRAM is closed or locked.
+ //
+ if (!mSmmAccess->OpenState || mSmmAccess->LockState) {
+ return EFI_INVALID_PARAMETER;
+ }
+
+ //
// Save current InSmm state and set InSmm state to TRUE
//
OldInSmm = gSmmCorePrivate->InSmm;
|