summaryrefslogtreecommitdiffstats
path: root/SecurityPkg
diff options
context:
space:
mode:
authorEric Dong <eric.dong@intel.com>2016-04-22 10:59:34 +0800
committerHao Wu <hao.a.wu@intel.com>2016-07-06 16:20:23 +0800
commit6f51b0b9b666ccb33f3d710edb3ff11767c2f1d1 (patch)
treeccf81e9b0421d63533e2d752f73cd6ad4f698ae7 /SecurityPkg
parenta7724ba5d1adc33d62fd71c3bd961009c088f2db (diff)
downloadedk2-6f51b0b9b666ccb33f3d710edb3ff11767c2f1d1.tar.gz
edk2-6f51b0b9b666ccb33f3d710edb3ff11767c2f1d1.tar.bz2
edk2-6f51b0b9b666ccb33f3d710edb3ff11767c2f1d1.zip
SecurityPkg OpalPasswordDxe: Check BlockSid capability before send command.
Not all opal device support BlockSid feature. So Add code logic to check the capability before send BlockSid command. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Eric Dong <eric.dong@intel.com> Reviewed-by: Feng Tian <feng.tian@intel.com> (cherry picked from commit be08755355ef16bf86ebed01762c6c9cb319b48a)
Diffstat (limited to 'SecurityPkg')
-rw-r--r--SecurityPkg/Tcg/Opal/OpalPasswordDxe/OpalDriver.c25
1 files changed, 11 insertions, 14 deletions
diff --git a/SecurityPkg/Tcg/Opal/OpalPasswordDxe/OpalDriver.c b/SecurityPkg/Tcg/Opal/OpalPasswordDxe/OpalDriver.c
index 76aaee9261..3764b24344 100644
--- a/SecurityPkg/Tcg/Opal/OpalPasswordDxe/OpalDriver.c
+++ b/SecurityPkg/Tcg/Opal/OpalPasswordDxe/OpalDriver.c
@@ -418,14 +418,11 @@ ReadyToBootCallback (
{
EFI_STATUS Status;
OPAL_DRIVER_DEVICE* Itr;
- UINT8 Count;
TCG_RESULT Result;
OPAL_EXTRA_INFO_VAR OpalExtraInfo;
UINTN DataSize;
OPAL_SESSION Session;
- Count = 0;
-
gBS->CloseEvent (Event);
DataSize = sizeof (OPAL_EXTRA_INFO_VAR);
@@ -445,21 +442,21 @@ ReadyToBootCallback (
// Send BlockSID command to each Opal disk
//
Itr = mOpalDriver.DeviceList;
- Count = 0;
while (Itr != NULL) {
- ZeroMem(&Session, sizeof(Session));
- Session.Sscp = Itr->OpalDisk.Sscp;
- Session.MediaId = Itr->OpalDisk.MediaId;
- Session.OpalBaseComId = Itr->OpalDisk.OpalBaseComId;
-
- Result = OpalBlockSid (&Session, TRUE); // HardwareReset must always be TRUE
- if (Result != TcgResultSuccess) {
- DEBUG ((DEBUG_ERROR, "OpalBlockSid fail\n"));
- break;
+ if (Itr->OpalDisk.SupportedAttributes.BlockSid) {
+ ZeroMem(&Session, sizeof(Session));
+ Session.Sscp = Itr->OpalDisk.Sscp;
+ Session.MediaId = Itr->OpalDisk.MediaId;
+ Session.OpalBaseComId = Itr->OpalDisk.OpalBaseComId;
+
+ Result = OpalBlockSid (&Session, TRUE); // HardwareReset must always be TRUE
+ if (Result != TcgResultSuccess) {
+ DEBUG ((DEBUG_ERROR, "OpalBlockSid fail\n"));
+ break;
+ }
}
Itr = Itr->Next;
- Count++;
}
}
}