On 09/23/19 13:45, Philippe Mathieu-Daudé wrote:
> 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"

Good catch, thanks! (For the other reviews as well, of course!)
Laszlo

> 
>> 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 (#47972): https://edk2.groups.io/g/devel/message/47972
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]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to