From nobody Thu May 16 07:06:58 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) client-ip=66.175.222.108; envelope-from=bounce+27952+94555+1787277+3901457@groups.io; helo=mail02.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+94555+1787277+3901457@groups.io ARC-Seal: i=1; a=rsa-sha256; t=1664505976; cv=none; d=zohomail.com; s=zohoarc; b=akAjHti+Z08cIJdbvkfzJh9J1QcSrAymF4JWp21ITOeg7nhOyFmKjLzN3vrMCuUeNzosyqJ0DjxdrPjfxk3hFPPz3OaAvbATfSLe/MCgfa+MNaSShLknCIWND6F+coM0qTCsJI1I2C3hNvMSdEnMyu3pCCzeAcv9U5q/uUolo3c= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1664505976; h=Content-Type:Date:From:In-Reply-To:List-Subscribe:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=Z9d8hUm4PUExqpvnMBof0ibjbjwAIGQQ686lpFtzcps=; b=BnNhJB8Eq2RNJv+nY/CbZJgrUj+gpCMXE1DVxkm3c464xL6UP+x9qiyaoyJSjh3b7JUWa2QJ1a0nYpvoxiikHFr7Y0AOKkHPsn8TOUXXR0UZ0u/4ZxV8ZqDpbzWNYlIkz5cz6KRE5mZjZ+STy1BW7CM9BntHMkqfVBKkPI6vusM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+94555+1787277+3901457@groups.io Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1664505976568126.2569805292867; Thu, 29 Sep 2022 19:46:16 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id sjgZYY1788612xptIBemGg2V; Thu, 29 Sep 2022 19:46:16 -0700 X-Received: from walk.intel-email.com (walk.intel-email.com [101.227.64.242]) by mx.groups.io with SMTP id smtpd.web11.1534.1664505973928912041 for ; Thu, 29 Sep 2022 19:46:14 -0700 X-Received: from walk.intel-email.com (localhost [127.0.0.1]) by walk.intel-email.com (Postfix) with ESMTP id 4E885CD1F864 for ; Fri, 30 Sep 2022 10:46:10 +0800 (CST) X-Received: from localhost (localhost [127.0.0.1]) by walk.intel-email.com (Postfix) with ESMTP id 48FD9CD1F851 for ; Fri, 30 Sep 2022 10:46:10 +0800 (CST) X-Received: from walk.intel-email.com (localhost [127.0.0.1]) by walk.intel-email.com (Postfix) with ESMTP id 108F9CD1F870 for ; Fri, 30 Sep 2022 10:46:10 +0800 (CST) X-Received: from mail.byosoft.com.cn (mail.byosoft.com.cn [58.240.74.242]) by walk.intel-email.com (Postfix) with SMTP id CD6E6CD1F86F for ; Fri, 30 Sep 2022 10:46:06 +0800 (CST) X-Received: from DESKTOPS6D0PVI ([58.246.60.130]) (envelope-sender ) by 192.168.6.13 with ESMTP for ; Fri, 30 Sep 2022 10:46:04 +0800 X-WM-Sender: gaoliming@byosoft.com.cn X-Originating-IP: 58.246.60.130 X-WM-AuthFlag: YES X-WM-AuthUser: gaoliming@byosoft.com.cn From: "gaoliming via groups.io" To: , References: In-Reply-To: Subject: =?UTF-8?B?5Zue5aSNOiBbZWRrMi1kZXZlbF0gW1BBVENIXSBNZGVNb2R1bGVQa2cgVmFyaWFibGVQZWk6IEFkZCBWYXJpYWJsZSBzdGF0ZSBjaGVjayB3aGVuIGZpbmQgdmFyaWFibGUgaW4gSW5kZXhUYWJsZS4=?= Date: Fri, 30 Sep 2022 10:46:06 +0800 Message-ID: <01fa01d8d476$c9f2ed80$5dd8c880$@byosoft.com.cn> MIME-Version: 1.0 Thread-Index: AQJnPwTjGET6rA20bWQJScDmerPV+qzabJMw Precedence: Bulk List-Unsubscribe: List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,gaoliming@byosoft.com.cn X-Gm-Message-State: r7jm7vl3SvcB7kR73HlKYilXx1787277AA= Content-Type: multipart/alternative; boundary="----=_NextPart_000_01FB_01D8D4B9.D81717E0" Content-Language: zh-cn DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1664505976; bh=SbJNRyKkf++jZnoVOVnlFECSjIVdahDYKt75jhBOKJI=; h=Content-Type:Date:From:Reply-To:Subject:To; b=LXpQFu84gYfuyfzJL29FlnMFq7eoRSTXjEchPmJ2mvuq5R1aliICNqzn4DB+pel7tDs JPSgyBTDTjE9EkHSlTLYbKT8IUv0gHFiYksZj1XlCA+OODNeXbWD8FuV+zTumKWV/wnic xkgtHXKdS2NjN52DA/oaePeaSs+YMFq5sRg= X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1664505977588100001 ------=_NextPart_000_01FB_01D8D4B9.D81717E0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Jiading: Hob Variable Store Info IndexTable is NULL. So, this logic doesn=E2=80=99t= work for HOB variable store. NV Variable Store Info has IndexTable. When i= ts IndexTable is initialized, its IndexTable will only record the variable = with VAR_ADDED attribute. Because NV Variable Data is not changed in PEI ph= ase, this check is not required by NV variable.=20 =20 Thanks Liming =E5=8F=91=E4=BB=B6=E4=BA=BA: devel@edk2.groups.io = =E4=BB=A3=E8=A1=A8 Jiading Zhang =E5=8F=91=E9=80=81=E6=97=B6=E9=97=B4: 2022=E5=B9=B49=E6=9C=8828=E6=97=A5 11= :05 =E6=94=B6=E4=BB=B6=E4=BA=BA: devel@edk2.groups.io =E4=B8=BB=E9=A2=98: [edk2-devel] [PATCH] MdeModulePkg VariablePei: Add Vari= able state check when find variable in IndexTable. =20 When read a variable in PEI, it will find it first in the HOB, then find in= variable store. When find in variable store, it will check the variable st= ate, but find in HOB, it doesn't check the state, so if the variable was ch= anged, it will find the obsolete variable in the HOB. =20 Signed-off-by: jdzhang > --- MdeModulePkg/Universal/Variable/Pei/Variable.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) =20 diff --git a/MdeModulePkg/Universal/Variable/Pei/Variable.c b/MdeModulePkg/= Universal/Variable/Pei/Variable.c index 26a4c73b45..dffbd8cdb1 100644 --- a/MdeModulePkg/Universal/Variable/Pei/Variable.c +++ b/MdeModulePkg/Universal/Variable/Pei/Variable.c @@ -866,11 +866,13 @@ FindVariableEx ( Offset +=3D IndexTable->Index[Index]; MaxIndex =3D (VARIABLE_HEADER *)((UINT8 *)IndexTable->StartPtr + Off= set); GetVariableHeader (StoreInfo, MaxIndex, &VariableHeader); - if (CompareWithValidVariable (StoreInfo, MaxIndex, VariableHeader, V= ariableName, VendorGuid, PtrTrack) =3D=3D EFI_SUCCESS) { - if (VariableHeader->State =3D=3D (VAR_IN_DELETED_TRANSITION & VAR_= ADDED)) { - InDeletedVariable =3D PtrTrack->CurrPtr; - } else { - return EFI_SUCCESS; + if ((VariableHeader->State =3D=3D VAR_ADDED) || (VariableHeader->Sta= te =3D=3D (VAR_IN_DELETED_TRANSITION & VAR_ADDED))) { + if (CompareWithValidVariable (StoreInfo, MaxIndex, VariableHeader,= VariableName, VendorGuid, PtrTrack) =3D=3D EFI_SUCCESS) { + if (VariableHeader->State =3D=3D (VAR_IN_DELETED_TRANSITION & VA= R_ADDED)) { + InDeletedVariable =3D PtrTrack->CurrPtr; + } else { + return EFI_SUCCESS; + } } } } --=20 2.20.1.windows.1 =20 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#94555): https://edk2.groups.io/g/devel/message/94555 Mute This Topic: https://groups.io/mt/94009355/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- ------=_NextPart_000_01FB_01D8D4B9.D81717E0 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable

Jiading:

=C2= =A0Hob Variable Store Info IndexTable is NULL. So, this logic doesn=E2=80= =99t work for HOB variable store. NV Variable Store Info has IndexTable. Wh= en its IndexTable is initialized, its IndexTable will only record the varia= ble with VAR_ADDED attribute. Because NV Variable Data is not changed in PE= I phase, this check is not required by NV variable.

<= p class=3DMsoNormal> 

Th= anks

Liming

=E5=8F=91=E4=BB=B6=E4=BA=BA: devel@edk2.groups.io <devel@edk2.groups.i= o> =E4=BB=A3=E8=A1=A8 Jiading Zhang
=E5=8F=91=E9=80=81=E6= =97=B6=E9=97=B4: 2022=E5=B9=B49=E6=9C=8828=E6=97=A5 11:05
=E6=94=B6=E4=BB=B6=E4=BA=BA= : devel@edk2.groups.io
=E4=B8=BB= =E9=A2=98: [edk2-devel] [P= ATCH] MdeModulePkg VariablePei: Add Variable state check when find variable= in IndexTable.

 

= When read a variable in PEI, it will find it first in th= e HOB, then find in variable store. When find in variable store, it will ch= eck the variable state, but find in HOB, it doesn't check the state, so if = the variable was changed, it will find the obsolete variable in the HOB.

 = ;

S= igned-off-by: jdzhang <jdzh= ang@kunluntech.com.cn>

---

 MdeModulePkg/Universal/Variable/Pei/Varia= ble.c | 12 +++++++-----

 1 file changed, 7 insertions(+), 5 deletions(-)<= o:p>

&nb= sp;

diff --git a/MdeModulePkg/Universal/Variable/Pei/Variable.c b/MdeModulePkg= /Universal/Variable/Pei/Variable.c

index 26a4c73b45..dffbd8cdb1 100644

--- a/MdeM= odulePkg/Universal/Variable/Pei/Variable.c

=

+++ b/MdeModulePkg/Universal/Variab= le/Pei/Variable.c

@@ -866,11 +866,13 @@ FindVariableEx (

=

      &nb= sp;Offset  +=3D IndexTable->Index[Index];

       M= axIndex =3D (VARIABLE_HEADER *)((UINT8 *)IndexTable->StartPtr + Offset);=

&n= bsp;      GetVariableHeader (StoreInfo, MaxIndex, &Varia= bleHeader);

-      if (CompareWithValidVariable (StoreInfo, Max= Index, VariableHeader, VariableName, VendorGuid, PtrTrack) =3D=3D EFI_SUCCE= SS) {

-        if (VariableHeader->State =3D=3D (VAR_IN= _DELETED_TRANSITION & VAR_ADDED)) {

-          In= DeletedVariable =3D PtrTrack->CurrPtr;

<= p class=3DMsoNormal>-        } else = {

-=           return EFI_SUCCESS;

+      i= f ((VariableHeader->State =3D=3D VAR_ADDED) || (VariableHeader->State= =3D=3D (VAR_IN_DELETED_TRANSITION & VAR_ADDED))) {

+      =   if (CompareWithValidVariable (StoreInfo, MaxIndex, VariableHeader, V= ariableName, VendorGuid, PtrTrack) =3D=3D EFI_SUCCESS) {<= /p>

+     =     if (VariableHeader->State =3D=3D (VAR_IN_DELETED_TRANSITI= ON & VAR_ADDED)) {

+            InDeletedVar= iable =3D PtrTrack->CurrPtr;

+          } else {

+&nb= sp;           return EFI_SUCCESS;

+    &nbs= p;     }

         }

       = ;}

=      }

= -- 

2.20.1.windows.1

<= p class=3DMsoNormal> 

_._,_._,_

G= roups.io Links:

You receive all messages sent to this group.

Vi= ew/Reply Online (#94555) | | Mute This Topic | New Topic
Your Subscription | Contact Group Owner | Unsubscribe [importer@patchew.org]
_._,_._,_

=20 ------=_NextPart_000_01FB_01D8D4B9.D81717E0--