diff options
author | Eric Dong <eric.dong@intel.com> | 2016-04-22 10:59:34 +0800 |
---|---|---|
committer | Hao Wu <hao.a.wu@intel.com> | 2016-07-06 16:20:23 +0800 |
commit | 6f51b0b9b666ccb33f3d710edb3ff11767c2f1d1 (patch) | |
tree | ccf81e9b0421d63533e2d752f73cd6ad4f698ae7 | |
parent | a7724ba5d1adc33d62fd71c3bd961009c088f2db (diff) | |
download | edk2-platforms-6f51b0b9b666ccb33f3d710edb3ff11767c2f1d1.tar.xz |
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)
-rw-r--r-- | SecurityPkg/Tcg/Opal/OpalPasswordDxe/OpalDriver.c | 25 |
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++;
}
}
}
|