On 9/17/19 9:49 PM, Laszlo Ersek wrote: > The HiiConstructConfigHdr() function takes the "DriverHandle" parameter in > order to fetch the device path from it, and then turn the device path into > PATH routing information. > > The HiiConstructConfigHdr() function is called from > VariableCleanupHiiExtractConfig(), which is only installed when "Type" is > "VarCleanupManually" in PlatformVarCleanup(). > > In that case, we create "Private->DriverHandle" as a new handle, and > install "mVarCleanupHiiVendorDevicePath" on it. Then we pass > "Private->DriverHandle" to HiiAddPackages(), which consumes the device > path for routing purposes. > > It follows that the "DriverHandle" argument pased to
"passed" > HiiConstructConfigHdr() should be the same driver handle, for matching > routing. > > Currently we pass "Private->HiiHandle", which is clearly a typo, because > it is the return value of HiiAddPackages(), and stands for the published > HII package list. Phew... > Therefore this patch addresses an actual bug. > > The typo has not been flagged by compilers because the UEFI spec > regrettably defines both EFI_HANDLE and EFI_HII_HANDLE as (VOID*). > > Cc: Hao A Wu <hao.a...@intel.com> > Cc: Jian J Wang <jian.j.w...@intel.com> > Cc: Liming Gao <liming....@intel.com> > Signed-off-by: Laszlo Ersek <ler...@redhat.com> > --- > > Notes: > build-tested only > > MdeModulePkg/Library/PlatformVarCleanupLib/PlatVarCleanupLib.c | 6 +++++- > 1 file changed, 5 insertions(+), 1 deletion(-) > > diff --git a/MdeModulePkg/Library/PlatformVarCleanupLib/PlatVarCleanupLib.c > b/MdeModulePkg/Library/PlatformVarCleanupLib/PlatVarCleanupLib.c > index 968c044a316a..3875d614bb41 100644 > --- a/MdeModulePkg/Library/PlatformVarCleanupLib/PlatVarCleanupLib.c > +++ b/MdeModulePkg/Library/PlatformVarCleanupLib/PlatVarCleanupLib.c > @@ -609,7 +609,11 @@ VariableCleanupHiiExtractConfig ( > // Allocate and fill a buffer large enough to hold the <ConfigHdr> > template > // followed by "&OFFSET=0&WIDTH=WWWWWWWWWWWWWWWW" followed by a > Null-terminator. > // > - ConfigRequestHdr = HiiConstructConfigHdr (&mVariableCleanupHiiGuid, > mVarStoreName, Private->HiiHandle); > + ConfigRequestHdr = HiiConstructConfigHdr ( > + &mVariableCleanupHiiGuid, > + mVarStoreName, > + Private->DriverHandle > + ); > Size = (StrLen (ConfigRequestHdr) + 32 + 1) * sizeof (CHAR16); > ConfigRequest = AllocateZeroPool (Size); > ASSERT (ConfigRequest != NULL); > Reviewed-by: Philippe Mathieu-Daude <phi...@redhat.com> -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#47848): https://edk2.groups.io/g/devel/message/47848 Mute This Topic: https://groups.io/mt/34180211/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-