From be08755355ef16bf86ebed01762c6c9cb319b48a Mon Sep 17 00:00:00 2001 From: Eric Dong Date: Fri, 22 Apr 2016 10:59:34 +0800 Subject: [PATCH] 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 Reviewed-by: Feng Tian --- .../Tcg/Opal/OpalPasswordDxe/OpalDriver.c | 23 ++++++++----------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/SecurityPkg/Tcg/Opal/OpalPasswordDxe/OpalDriver.c b/SecurityPkg/Tcg/Opal/OpalPasswordDxe/OpalDriver.c index 4a4fa6a56d..7c6deb8f39 100644 --- a/SecurityPkg/Tcg/Opal/OpalPasswordDxe/OpalDriver.c +++ b/SecurityPkg/Tcg/Opal/OpalPasswordDxe/OpalDriver.c @@ -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++; } } }