Fix TPM may be locked twice issue in normal boot.

Signed-off-by: Dong Guo <guo.dong@intel.com>
Reviewed-by: Ye Ting <ting.ye@intel.com>
Reviewed-by: Yao Jiewen <jiewen.yao@intel.com>


git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@14079 6f19259b-4bc3-4df7-8a09-765794883524
diff --git a/SecurityPkg/Library/DxeTcgPhysicalPresenceLib/DxeTcgPhysicalPresenceLib.c b/SecurityPkg/Library/DxeTcgPhysicalPresenceLib/DxeTcgPhysicalPresenceLib.c
index 44845b0..3414cd2 100644
--- a/SecurityPkg/Library/DxeTcgPhysicalPresenceLib/DxeTcgPhysicalPresenceLib.c
+++ b/SecurityPkg/Library/DxeTcgPhysicalPresenceLib/DxeTcgPhysicalPresenceLib.c
@@ -8,7 +8,7 @@
 

   ExecutePendingTpmRequest() will receive untrusted input and do validation.

 

-Copyright (c) 2006 - 2012, Intel Corporation. All rights reserved.<BR>

+Copyright (c) 2006 - 2013, Intel Corporation. All rights reserved.<BR>

 This program and the accompanying materials 

 are licensed and made available under the terms and conditions of the BSD License 

 which accompanies this distribution.  The full text of the license may be found at 

@@ -1010,13 +1010,6 @@
   UINTN                             DataSize;

   BOOLEAN                           RequestConfirmed;

 

-  if (TcgPpData->PPRequest == PHYSICAL_PRESENCE_NO_ACTION) {

-    //

-    // No operation request

-    //

-    return;

-  }

-

   if (!HaveValidTpmRequest(TcgPpData, &RequestConfirmed)) {

     //

     // Invalid operation request.

@@ -1165,6 +1158,13 @@
 

   DEBUG ((EFI_D_INFO, "[TPM] Flags=%x, PPRequest=%x\n", TcgPpData.Flags, TcgPpData.PPRequest));

 

+  if (TcgPpData.PPRequest == PHYSICAL_PRESENCE_NO_ACTION) {

+    //

+    // No operation request

+    //

+    return;

+  }

+

   Status = GetTpmCapability (TcgProtocol, &LifetimeLock, &CmdEnable);

   if (EFI_ERROR (Status)) {

     return ;