Hi Guomin, This patch change the position of invoking the FindVariable() function to after AutoUpdateLangVariable() invoked.
Thanks, Ming 在 2020/5/27 8:12, Jiang, Guomin 写道: > Hi Huangming, > > I will clarify it when I am free, please be patient. > > If it is urgent for you, I suggest that you can use your patch temporarily. > > Any other thing, I check your patch in the mail, it seem that not any change > in code, can you double confirm it? > > Best Regards >> -----Original Message----- >> From: Ming Huang <huangmin...@huawei.com> >> Sent: Tuesday, May 26, 2020 2:08 PM >> To: Jiang, Guomin <guomin.ji...@intel.com>; devel@edk2.groups.io; Wang, >> Jian J <jian.j.w...@intel.com>; Wu, Hao A <hao.a...@intel.com>; Gao, >> Liming <liming....@intel.com> >> Cc: lidongz...@huawei.com; songdongku...@huawei.com; >> wanghuiqi...@huawei.com; qiulian...@huawei.com; >> shenli...@huawei.com >> Subject: Re: [edk2-devel] [RFC edk2 v1 1/1] MdeModulePkg/Variable: Move >> FindVariable after AutoUpdateLangVariable >> >> >> >> 在 2020/5/26 8:39, Jiang, Guomin 写道: >>> Hi Huangming, >>> >>> I am taking the bugzilla and I am sorry that I haven't provide you with >> productive comment. >>> >>> I am still busy until August. >>> >>> I just want to know that: >>> 1. Have you verified that the symptom will disappear after invoked >> FindVariable() function? >> >> Yes, the symptom will disappeare after add this patch. >> >>> 2. Is it your suggestion that the FindVariable() need to be invoked but you >> have no idea that how to fix it? >> >> This patch can fix this issue, and I guess this issue was resulted by adding >> AutoUpdateLangVariable feature. >> I hope this patch can be merged to edk2 master. >> >> Thanks >> Ming >> >>> >>> Best Regards >>> Guomin >>>> -----Original Message----- >>>> From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Ming >>>> Huang >>>> Sent: Monday, May 25, 2020 7:34 PM >>>> To: devel@edk2.groups.io; Wang, Jian J <jian.j.w...@intel.com>; Wu, >>>> Hao A <hao.a...@intel.com>; Gao, Liming <liming....@intel.com> >>>> Cc: lidongz...@huawei.com; huangmin...@huawei.com; >>>> songdongku...@huawei.com; wanghuiqi...@huawei.com; >>>> qiulian...@huawei.com; shenli...@huawei.com >>>> Subject: [edk2-devel] [RFC edk2 v1 1/1] MdeModulePkg/Variable: Move >>>> FindVariable after AutoUpdateLangVariable >>>> >>>> When occur reclaim in AutoUpdateLangVariable(), the CurrPtr of >>>> Variable is invalid. The State will be update with wrong position >>>> after UpdateVariable in this situation and two valid PlatformLang or Lang >> variables will exist. >>>> BmForEachVariable() will enter endless loop while exist two valid >>>> PlatformLang variables. So FindVariable() should be invoked atfer >>>> AutoUpdateLangVariable(). >>>> >>>> https://bugzilla.tianocore.org/show_bug.cgi?id=2667 >>>> >>>> Signed-off-by: Ming Huang <huangmin...@huawei.com> >>>> --- >>>> MdeModulePkg/Universal/Variable/RuntimeDxe/Variable.c | 26 >>>> ++++++++++---------- >>>> 1 file changed, 13 insertions(+), 13 deletions(-) >>>> >>>> diff --git a/MdeModulePkg/Universal/Variable/RuntimeDxe/Variable.c >>>> b/MdeModulePkg/Universal/Variable/RuntimeDxe/Variable.c >>>> index 1e71fc6..0cec981 100644 >>>> --- a/MdeModulePkg/Universal/Variable/RuntimeDxe/Variable.c >>>> +++ b/MdeModulePkg/Universal/Variable/RuntimeDxe/Variable.c >>>> @@ -2741,6 +2741,19 @@ VariableServiceSetVariable ( >>>> mVariableModuleGlobal->NonVolatileLastVariableOffset = (UINTN) >>>> NextVariable - (UINTN) Point; >>>> } >>>> >>>> + if (!FeaturePcdGet (PcdUefiVariableDefaultLangDeprecate)) { >>>> + // >>>> + // Hook the operation of setting PlatformLangCodes/PlatformLang >>>> + and >>>> LangCodes/Lang. >>>> + // >>>> + Status = AutoUpdateLangVariable (VariableName, Data, DataSize); >>>> + if (EFI_ERROR (Status)) { >>>> + // >>>> + // The auto update operation failed, directly return to avoid >>>> inconsistency between PlatformLang and Lang. >>>> + // >>>> + goto Done; >>>> + } >>>> + } >>>> + >>>> // >>>> // Check whether the input variable is already existed. >>>> // >>>> @@ -2763,19 +2776,6 @@ VariableServiceSetVariable ( >>>> } >>>> } >>>> >>>> - if (!FeaturePcdGet (PcdUefiVariableDefaultLangDeprecate)) { >>>> - // >>>> - // Hook the operation of setting PlatformLangCodes/PlatformLang and >>>> LangCodes/Lang. >>>> - // >>>> - Status = AutoUpdateLangVariable (VariableName, Data, DataSize); >>>> - if (EFI_ERROR (Status)) { >>>> - // >>>> - // The auto update operation failed, directly return to avoid >> inconsistency >>>> between PlatformLang and Lang. >>>> - // >>>> - goto Done; >>>> - } >>>> - } >>>> - >>>> if (mVariableModuleGlobal->VariableGlobal.AuthSupport) { >>>> Status = AuthVariableLibProcessVariable (VariableName, >>>> VendorGuid, Data, DataSize, Attributes); >>>> } else { >>>> -- >>>> 2.8.1 >>>> >>>> >>>> >>> >>> >>> > > > . > -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#60345): https://edk2.groups.io/g/devel/message/60345 Mute This Topic: https://groups.io/mt/74462883/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-