> -----Original Message----- > From: Laszlo Ersek [mailto:ler...@redhat.com] > Sent: Friday, February 01, 2019 5:18 PM > To: Wu, Hao A; edk2-devel@lists.01.org > Cc: Zeng, Star > Subject: Re: [edk2] [PATCH v3 10/12] MdeModulePkg/SmmLockBox(PEI): > Remove an ASSERT in RestoreLockBox() > > On 02/01/19 06:47, Hao Wu wrote: > > This commit is out of the scope for BZ-1409. It is a refinement for the > > PEI library instance within SmmLockBoxLib. > > > > For the below ASSERT statement within function RestoreLockBox(): > > Status = SmmCommunicationPpi->Communicate ( > > SmmCommunicationPpi, > > &CommBuffer[0], > > &CommSize > > ); > > if (Status == EFI_NOT_STARTED) { > > // > > // Pei SMM communication not ready yet, so we access SMRAM directly > > // > > DEBUG ((DEBUG_INFO, "SmmLockBoxPeiLib Communicate - (%r)\n", > Status)); > > Status = InternalRestoreLockBoxFromSmram (Guid, Buffer, Length); > > LockBoxParameterRestore->Header.ReturnStatus = (UINT64)Status; > > if (Length != NULL) { > > LockBoxParameterRestore->Length = (UINT64)*Length; > > } > > } > > ASSERT_EFI_ERROR (Status); > > > > It is possible for previous codes to return an error status that is > > possible for happen. One example is that, when the 'if' statement > > 'if (Status == EFI_NOT_STARTED) {' is entered, function > > InternalRestoreLockBoxFromSmram() is possible to return > 'BUFFER_TOO_SMALL' > > if the caller of RestoreLockBox() provides a buffer that is too small to > > hold the content of LockBox. > > > > Thus, this commit will remove the ASSERT here. > > > > Please note that the current implementation of RestoreLockBox() is > > handling the above-mentioned error case properly, so no additional error > > handling codes are needed here. > > > > Cc: Jian J Wang <jian.j.w...@intel.com> > > Cc: Star Zeng <star.z...@intel.com> > > Contributed-under: TianoCore Contribution Agreement 1.1 > > Signed-off-by: Hao Wu <hao.a...@intel.com> > > Reviewed-by: Ray Ni <ray...@intel.com> > > --- > > MdeModulePkg/Library/SmmLockBoxLib/SmmLockBoxPeiLib.c | 1 - > > 1 file changed, 1 deletion(-) > > > > diff --git a/MdeModulePkg/Library/SmmLockBoxLib/SmmLockBoxPeiLib.c > b/MdeModulePkg/Library/SmmLockBoxLib/SmmLockBoxPeiLib.c > > index 9f73480070..8c3e65bc96 100644 > > --- a/MdeModulePkg/Library/SmmLockBoxLib/SmmLockBoxPeiLib.c > > +++ b/MdeModulePkg/Library/SmmLockBoxLib/SmmLockBoxPeiLib.c > > @@ -623,7 +623,6 @@ RestoreLockBox ( > > LockBoxParameterRestore->Length = (UINT64)*Length; > > } > > } > > - ASSERT_EFI_ERROR (Status); > > > > if (Length != NULL) { > > *Length = (UINTN)LockBoxParameterRestore->Length; > > > > OVMF never reaches this code path because it doesn't include an > EFI_PEI_SMM_COMMUNICATION_PPI instance. Therefore OVMF always goes > through InternalRestoreLockBoxFromSmram(). > > See commit bd3afeb1d62c ("MdeModulePkg: SmmLockBoxPeiLib: work without > EFI_PEI_SMM_COMMUNICATION_PPI", 2015-11-16). > > In that regard, I'm OK with this patch; this alone would suffice for me > to give an Acked-by. > > However, having re-reviewed bd3afeb1d62c now, I see that this patch is > actually technically correct. So I believe I can give an R-b too, > despite OVMF not using the affected code path. > > Reviewed-by: Laszlo Ersek <ler...@redhat.com> > > Other than that, you might want to review existing callers of this > function, to ensure they don't rely on any such failure being caught > internally to the function (via the ASSERT that's now being removed). > Again, this would only be relevant for platforms that produce an > EFI_PEI_SMM_COMMUNICATION_PPI instance.
Sure. Thanks for the reminder. I will check those callers before pushing this change. Best Regards, Hao Wu > > Thanks > Laszlo _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel