mirror of https://github.com/acidanthera/audk.git
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>
This commit is contained in:
parent
8d3d84508f
commit
be08755355
|
@ -388,14 +388,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);
|
||||
|
@ -415,21 +412,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;
|
||||
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;
|
||||
Result = OpalBlockSid (&Session, TRUE); // HardwareReset must always be TRUE
|
||||
if (Result != TcgResultSuccess) {
|
||||
DEBUG ((DEBUG_ERROR, "OpalBlockSid fail\n"));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
Itr = Itr->Next;
|
||||
Count++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue