Clarify V2 patch include below changes: "unkown" -> "unknown"
"continue boot?." -> "continue boot?" "Press Esc" -> "Press ESC" L"Confirm: Not unlock device and continue boot?.", -> L"Confirm: keep lock status and continue boot?", Also refine the patch comments. Thanks, Eric > -----Original Message----- > From: edk2-devel [mailto:edk2-devel-boun...@lists.01.org] On Behalf Of Eric > Dong > Sent: Tuesday, May 10, 2016 8:35 AM > To: edk2-devel@lists.01.org > Cc: Tian, Feng > Subject: [edk2] [Patch v2] SecurityPkg OpalPasswordDxe: Error handling > enhance when input password. > > Enhance the error handling: > 1. When device in unlock status and user input ESC, force shutdown. > 2. When user reach max retry count, force shutdown. > > Cc: Feng Tian <feng.t...@intel.com> > Contributed-under: TianoCore Contribution Agreement 1.0 > Signed-off-by: Eric Dong <eric.d...@intel.com> > --- > SecurityPkg/Tcg/Opal/OpalPasswordDxe/OpalDriver.c | 69 > +++++++++++++++-------- > 1 file changed, 47 insertions(+), 22 deletions(-) > > diff --git a/SecurityPkg/Tcg/Opal/OpalPasswordDxe/OpalDriver.c > b/SecurityPkg/Tcg/Opal/OpalPasswordDxe/OpalDriver.c > index 7c6deb8..68ec9dc 100644 > --- a/SecurityPkg/Tcg/Opal/OpalPasswordDxe/OpalDriver.c > +++ b/SecurityPkg/Tcg/Opal/OpalPasswordDxe/OpalDriver.c > @@ -263,6 +263,7 @@ OpalDriverRequestPassword ( > EFI_INPUT_KEY Key; > OPAL_SESSION Session; > BOOLEAN PressEsc; > + BOOLEAN Locked; > > if (Dev == NULL) { > return; > @@ -277,33 +278,56 @@ OpalDriverRequestPassword ( > Session.MediaId = Dev->OpalDisk.MediaId; > Session.OpalBaseComId = Dev->OpalDisk.OpalBaseComId; > > + Locked = OpalDeviceLocked (&Dev->OpalDisk.SupportedAttributes, > &Dev->OpalDisk.LockingFeature); > + > while (Count < MAX_PASSWORD_TRY_COUNT) { > Password = OpalDriverPopUpHddPassword (Dev, &PressEsc); > if (PressEsc) { > - // > - // User not input password and press ESC, keep device in lock status > and continue boot. > - // > - do { > - CreatePopUp ( > - EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, > - &Key, > - L"Confirm: Not unlock device and continue boot?.", > - L"Press ENTER to confirm, Press Esc to input password", > - NULL > - ); > - } while ((Key.ScanCode != SCAN_ESC) && (Key.UnicodeChar != > CHAR_CARRIAGE_RETURN)); > - > - if (Key.UnicodeChar == CHAR_CARRIAGE_RETURN) { > - gST->ConOut->ClearScreen(gST->ConOut); > + if (Locked) { > // > - // Keep lock and continue boot. > + // Current device in the lock status and > + // User not input password and press ESC, > + // keep device in lock status and continue boot. > // > - return; > + do { > + CreatePopUp ( > + EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, > + &Key, > + L"Confirm: keep lock status and continue boot?", > + L"Press ENTER to confirm, Press ESC to input password", > + NULL > + ); > + } while ((Key.ScanCode != SCAN_ESC) && (Key.UnicodeChar != > CHAR_CARRIAGE_RETURN)); > + > + if (Key.UnicodeChar == CHAR_CARRIAGE_RETURN) { > + gST->ConOut->ClearScreen(gST->ConOut); > + // > + // Keep lock and continue boot. > + // > + return; > + } else { > + // > + // Let user input password again. > + // > + continue; > + } > } else { > // > - // Let user input password again. > + // Current device in the unlock status and > + // User not input password and press ESC, > + // Shutdown the device. > // > - continue; > + do { > + CreatePopUp ( > + EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, > + &Key, > + L"Warning: system in unknown status, must shutdown!", > + L"Press ENTER to shutdown.", > + NULL > + ); > + } while (Key.UnicodeChar != CHAR_CARRIAGE_RETURN); > + > + gRT->ResetSystem (EfiResetShutdown, EFI_SUCCESS, 0, NULL); > } > } > > @@ -313,7 +337,7 @@ OpalDriverRequestPassword ( > } > PasswordLen = (UINT32) AsciiStrLen(Password); > > - if (OpalDeviceLocked (&Dev->OpalDisk.SupportedAttributes, > &Dev->OpalDisk.LockingFeature)) { > + if (Locked) { > Ret = OpalSupportUnlock(&Session, Password, PasswordLen, > Dev->OpalDevicePath); > } else { > Ret = OpalSupportLock(&Session, Password, PasswordLen, > Dev->OpalDevicePath); > @@ -349,12 +373,13 @@ OpalDriverRequestPassword ( > CreatePopUp ( > EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, > &Key, > - L"Opal password retry count is expired. Keep lock and > continue boot.", > + L"Opal password retry count exceeds the limit. Must > shutdown!", > L"Press ENTER to continue", > NULL > ); > } while (Key.UnicodeChar != CHAR_CARRIAGE_RETURN); > - gST->ConOut->ClearScreen(gST->ConOut); > + > + gRT->ResetSystem (EfiResetShutdown, EFI_SUCCESS, 0, NULL); > } > } > } > -- > 2.6.4.windows.1 > > _______________________________________________ > edk2-devel mailing list > edk2-devel@lists.01.org > https://lists.01.org/mailman/listinfo/edk2-devel _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel