From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=PpwILw3C; spf=pass (domain: intel.com, ip: 192.55.52.151, mailfrom: michael.a.kubacki@intel.com) Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by groups.io with SMTP; Thu, 03 Oct 2019 11:07:21 -0700 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga004.jf.intel.com ([10.7.209.38]) by fmsmga107.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 03 Oct 2019 11:07:21 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.67,253,1566889200"; d="scan'208";a="343741819" Received: from fmsmsx104.amr.corp.intel.com ([10.18.124.202]) by orsmga004.jf.intel.com with ESMTP; 03 Oct 2019 11:07:20 -0700 Received: from fmsmsx155.amr.corp.intel.com (10.18.116.71) by fmsmsx104.amr.corp.intel.com (10.18.124.202) with Microsoft SMTP Server (TLS) id 14.3.439.0; Thu, 3 Oct 2019 11:07:19 -0700 Received: from FMSEDG001.ED.cps.intel.com (10.1.192.133) by FMSMSX155.amr.corp.intel.com (10.18.116.71) with Microsoft SMTP Server (TLS) id 14.3.439.0; Thu, 3 Oct 2019 11:07:19 -0700 Received: from NAM02-CY1-obe.outbound.protection.outlook.com (104.47.37.58) by edgegateway.intel.com (192.55.55.68) with Microsoft SMTP Server (TLS) id 14.3.439.0; Thu, 3 Oct 2019 11:06:33 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=d9wZ6DdgG2hH2gzIOEmk3z3oRVihDhfrikZUgLYHDXLIWTNe+upXCXXRPglxEW6AfQXYfK7gW5Je8pC5cc2h/kxH2gPHXa0kcaL2FdE0WMwlLLdSW+h5E9AXVpgyGYYLfOxMAvg0DodgklUpx+xCpdDTmNvZutzlH066lC95ycEt4oP2r6Knb2iqQoJa7nGrIVUtK3R4lPSuZNDyQvEVZy3dN4Y0dACzJxBaL5CZTuKpKCdfxMsgfQ28vv2b/ueW5OsBcnoeepTeKsH77PsD/iZN1amssjcrTjRKFyEdPDpfYjRempkBQZ35YlAyhAnzxrfYeIo9KmHx5EdcZRrESQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=H9S6DRJwiMjZVVrusHo16S9w2629MsA4nKg3rx9lpRA=; b=GJPM0bCEOFA4eDEEca4X3h7ZSvrZAbmgdQi79NHKhQW0IgLLHFM376meuSuQEurINXwAa7sPXE69WkxOXvs3epAWBU4PvupmIM7968lxIW1xi/fnMS0j4sO6OBmH3eOIuzcX9e7c6NpCyzOQ82KsOhXTp+fG/xsoJDb7l6VAz1x2X0ITCSPFjlaH2CstkLFl6kIL94gYjhSu44uKPQZlpOKuHCqKut8eR+V9TPc3G1bhVjIuqrMo+kP7DL5C3L1vegv1bhn8pTHl51N3Aq6bTMwmhDCThMK8Ej68HLsOwH5NCUjCe2Gx3LzUscbGjbVEhQYmTpEZFICkYLpgPcKusg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=H9S6DRJwiMjZVVrusHo16S9w2629MsA4nKg3rx9lpRA=; b=PpwILw3Cldm89CxnOnzu0kI29v5sxUfRpHE1TnPTQytViCGGIurwSyIF+eqonoa1frpaOJhamkZXesgLLcCiAvZg0t7R5ahMbs5rIfwu0jwjgN9bclHaU5AmJ6OG7lRO1JayvQhHgujPtqbJDvH29spzIHVLJZcPhughsRi+rBI= Received: from DM6PR11MB3834.namprd11.prod.outlook.com (20.179.17.87) by DM6PR11MB3084.namprd11.prod.outlook.com (20.177.218.213) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2305.20; Thu, 3 Oct 2019 18:05:58 +0000 Received: from DM6PR11MB3834.namprd11.prod.outlook.com ([fe80::59cc:8a30:6b9e:584e]) by DM6PR11MB3834.namprd11.prod.outlook.com ([fe80::59cc:8a30:6b9e:584e%3]) with mapi id 15.20.2305.023; Thu, 3 Oct 2019 18:05:58 +0000 From: "Kubacki, Michael A" To: "Wu, Hao A" , "devel@edk2.groups.io" CC: "Bi, Dandan" , Ard Biesheuvel , "Dong, Eric" , Laszlo Ersek , "Gao, Liming" , "Kinney, Michael D" , "Ni, Ray" , "Wang, Jian J" , "Yao, Jiewen" Subject: Re: [PATCH V2 3/9] MdeModulePkg/Variable: Parameterize VARIABLE_INFO_ENTRY buffer Thread-Topic: [PATCH V2 3/9] MdeModulePkg/Variable: Parameterize VARIABLE_INFO_ENTRY buffer Thread-Index: AQHVdZ61sWwVTyB4eUeIO+dh4/6Kh6dCNuWQgAcIC7A= Date: Thu, 3 Oct 2019 18:05:57 +0000 Message-ID: References: <20190928014717.31372-1-michael.a.kubacki@intel.com> <20190928014717.31372-4-michael.a.kubacki@intel.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows x-ctpclassification: CTP_NT x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiZjk3Zjg4MmUtYzdjNy00MTAzLWFmYjktNTk5NDgwNGFhNzJmIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoiOENIbGlQTzlXRklSRHhnTFJBVXJTaFBPSXpsd29temJ5STBrYnp1VklOMWE3eHFvQlJ0OXdxT3RZVVVsTHNWcSJ9 dlp-reaction: no-action dlp-version: 11.2.0.6 authentication-results: spf=none (sender IP is ) smtp.mailfrom=michael.a.kubacki@intel.com; x-originating-ip: [134.134.136.217] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: e3aa9158-d54b-44f5-4f32-08d7482c578d x-ms-traffictypediagnostic: DM6PR11MB3084: x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:9508; x-forefront-prvs: 01792087B6 x-forefront-antispam-report: SFV:NSPM;SFS:(10019020)(376002)(346002)(39860400002)(136003)(396003)(366004)(189003)(13464003)(199004)(7696005)(71200400001)(71190400001)(2501003)(76176011)(8676002)(186003)(30864003)(8936002)(102836004)(25786009)(476003)(99286004)(7736002)(3846002)(6116002)(66066001)(4326008)(110136005)(76116006)(305945005)(54906003)(81166006)(81156014)(26005)(52536014)(316002)(66476007)(66946007)(64756008)(66446008)(74316002)(66556008)(33656002)(107886003)(86362001)(6246003)(14454004)(486006)(14444005)(5660300002)(55016002)(9686003)(2906002)(478600001)(6506007)(6436002)(256004)(229853002)(53546011)(446003)(11346002);DIR:OUT;SFP:1102;SCL:1;SRVR:DM6PR11MB3084;H:DM6PR11MB3834.namprd11.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;MX:1;A:1; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: dweloL+4cRLK5iSRFRH8h7L6kwsiI3TaPT+6K/1Yhr8eWvQvI3/SjsXsxGe1fljOszFBfnd4C9aIuXG75sAXRcBGkDTZuxg4p9DwU/w4dqk0MLobmtSYOYlSbZXL/XyOyGy6Ef7uCe1mr909kqOdTXK1cOQ5iLLJu2aZjKHT4bMxRP3HvxjimsYsG8x8Ue2wXuOu8F4wazgK+mTiEHwPxRyA0pID46M9XUZYWk3Elbh6nWh7JY9ketKxN1klkER7r1LUFtXwyUcVJKEIyRPHyJpaEbaGOib9W+f4ozFNlvO6HuvJ/rWxOxrPBAzJjLrwLOSzmKxKKemGk6ZEzW5UruGVev5WyjI4c5tVJwaHwMBagIzn0L0QE7PVEpMx+jo+FJA8OWpw1rpbOeloVbQqyOW+8E2xba4KZh2M1Hkzs1s= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-Network-Message-Id: e3aa9158-d54b-44f5-4f32-08d7482c578d X-MS-Exchange-CrossTenant-originalarrivaltime: 03 Oct 2019 18:05:57.9394 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: d6lHdOqsA40eElLzHF21XONyH7c/PgBDvSvNRiaucONC3PLH9BFKNHana06OZbZ/95UdgV+UoMEh011n94MJqBCfRB81fHo5XNf9+GKF+eE= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR11MB3084 Return-Path: michael.a.kubacki@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Your understanding is correct. Thanks, Michael > -----Original Message----- > From: Wu, Hao A > Sent: Thursday, October 3, 2019 1:04 AM > To: Kubacki, Michael A ; > devel@edk2.groups.io > Cc: Bi, Dandan ; Ard Biesheuvel > ; Dong, Eric ; Laszlo Ers= ek > ; Gao, Liming ; Kinney, Michael > D ; Ni, Ray ; Wang, Jian J > ; Yao, Jiewen > Subject: RE: [PATCH V2 3/9] MdeModulePkg/Variable: Parameterize > VARIABLE_INFO_ENTRY buffer >=20 > > -----Original Message----- > > From: Kubacki, Michael A > > Sent: Saturday, September 28, 2019 9:47 AM > > To: devel@edk2.groups.io > > Cc: Bi, Dandan; Ard Biesheuvel; Dong, Eric; Laszlo Ersek; Gao, Liming; > > Kinney, Michael D; Ni, Ray; Wang, Jian J; Wu, Hao A; Yao, Jiewen > > Subject: [PATCH V2 3/9] MdeModulePkg/Variable: Parameterize > > VARIABLE_INFO_ENTRY buffer > > > > UpdateVariableInfo () currently accepts parameters regarding updates > > to be made to a global variable of type VARIABLE_INFO_ENTRY. This > > change passes the structure by pointer to UpdateVariableInfo () so > > structures can be updated outside the fixed global variable. >=20 >=20 > For: > "... so structures can be updated outside the fixed global variable " >=20 > Do you mean: >=20 > VARIABLE_INFO_ENTRY structure pointers other than "&gVariableInfo" can > be passed to UpdateVariableInfo(). >=20 > Is my understanding correct? If so, > Reviewed-by: Hao A Wu >=20 > Best Regards, > Hao Wu >=20 >=20 > > > > Cc: Dandan Bi > > Cc: Ard Biesheuvel > > Cc: Eric Dong > > Cc: Laszlo Ersek > > Cc: Liming Gao > > Cc: Michael D Kinney > > Cc: Ray Ni > > Cc: Jian J Wang > > Cc: Hao A Wu > > Cc: Jiewen Yao > > Signed-off-by: Michael Kubacki > > --- > > MdeModulePkg/Universal/Variable/RuntimeDxe/VariableParsing.h | 18 > > +++++---- > > MdeModulePkg/Universal/Variable/RuntimeDxe/Variable.c | 14 +++-= -- > - > > MdeModulePkg/Universal/Variable/RuntimeDxe/VariableParsing.c | 41 > > +++++++++++--------- > > 3 files changed, 39 insertions(+), 34 deletions(-) > > > > diff --git > > a/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableParsing.h > > b/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableParsing.h > > index 0d231511ea..6f2000f3ee 100644 > > --- a/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableParsing.h > > +++ b/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableParsing.h > > @@ -286,13 +286,14 @@ GetNextVariableEx ( > > the transaction. Data is allocated by this routine, but never > > freed. > > > > - @param[in] VariableName Name of the Variable to track. > > - @param[in] VendorGuid Guid of the Variable to track. > > - @param[in] Volatile TRUE if volatile FALSE if non-volatile. > > - @param[in] Read TRUE if GetVariable() was called. > > - @param[in] Write TRUE if SetVariable() was called. > > - @param[in] Delete TRUE if deleted via SetVariable(). > > - @param[in] Cache TRUE for a cache hit. > > + @param[in] VariableName Name of the Variable to track. > > + @param[in] VendorGuid Guid of the Variable to track. > > + @param[in] Volatile TRUE if volatile FALSE if non-volatil= e. > > + @param[in] Read TRUE if GetVariable() was called. > > + @param[in] Write TRUE if SetVariable() was called. > > + @param[in] Delete TRUE if deleted via SetVariable(). > > + @param[in] Cache TRUE for a cache hit. > > + @param[in,out] VariableInfo Pointer to a pointer of > > VARIABLE_INFO_ENTRY structures. > > > > **/ > > VOID > > @@ -303,7 +304,8 @@ UpdateVariableInfo ( > > IN BOOLEAN Read, > > IN BOOLEAN Write, > > IN BOOLEAN Delete, > > - IN BOOLEAN Cache > > + IN BOOLEAN Cache, > > + IN OUT VARIABLE_INFO_ENTRY **VariableInfo > > ); > > > > #endif > > diff --git a/MdeModulePkg/Universal/Variable/RuntimeDxe/Variable.c > > b/MdeModulePkg/Universal/Variable/RuntimeDxe/Variable.c > > index 816e8f7b8f..1a57d7e1ba 100644 > > --- a/MdeModulePkg/Universal/Variable/RuntimeDxe/Variable.c > > +++ b/MdeModulePkg/Universal/Variable/RuntimeDxe/Variable.c > > @@ -1641,7 +1641,7 @@ UpdateVariable ( > > // go to delete this variable in variable HOB and > > // try to flush other variables from HOB to flash. > > // > > - UpdateVariableInfo (VariableName, VendorGuid, FALSE, FALSE, > FALSE, > > TRUE, FALSE); > > + UpdateVariableInfo (VariableName, VendorGuid, FALSE, FALSE, > > + FALSE, > > TRUE, FALSE, &gVariableInfo); > > FlushHobVariableToFlash (VariableName, VendorGuid); > > return EFI_SUCCESS; > > } > > @@ -1758,7 +1758,7 @@ UpdateVariable ( > > &State > > ); > > if (!EFI_ERROR (Status)) { > > - UpdateVariableInfo (VariableName, VendorGuid, Variable->Volati= le, > > FALSE, FALSE, TRUE, FALSE); > > + UpdateVariableInfo (VariableName, VendorGuid, > > + Variable->Volatile, > > FALSE, FALSE, TRUE, FALSE, &gVariableInfo); > > if (!Variable->Volatile) { > > CacheVariable->CurrPtr->State =3D State; > > FlushHobVariableToFlash (VariableName, VendorGuid); @@ > > -1777,7 +1777,7 @@ UpdateVariable ( > > // > > // Variable content unchanged and no need to update timestamp, > > just return. > > // > > - UpdateVariableInfo (VariableName, VendorGuid, Variable->Volatile= , > > FALSE, TRUE, FALSE, FALSE); > > + UpdateVariableInfo (VariableName, VendorGuid, > > + Variable->Volatile, > > FALSE, TRUE, FALSE, FALSE, &gVariableInfo); > > Status =3D EFI_SUCCESS; > > goto Done; > > } else if ((CacheVariable->CurrPtr->State =3D=3D VAR_ADDED) || @@ > > -2006,7 +2006,7 @@ UpdateVariable ( > > CacheVariable->CurrPtr =3D (VARIABLE_HEADER *)((UINTN) > > CacheVariable->StartPtr + ((UINTN) Variable->CurrPtr - (UINTN) > > CacheVariable->Variable- > > >StartPtr)); > > CacheVariable->InDeletedTransitionPtr =3D NULL; > > } > > - UpdateVariableInfo (VariableName, VendorGuid, FALSE, FALSE, TR= UE, > > FALSE, FALSE); > > + UpdateVariableInfo (VariableName, VendorGuid, FALSE, FALSE, > > + TRUE, > > FALSE, FALSE, &gVariableInfo); > > FlushHobVariableToFlash (VariableName, VendorGuid); > > } else { > > if (IsCommonUserVariable && ((VarSize + > > mVariableModuleGlobal- > > >CommonUserVariableTotalSize) > mVariableModuleGlobal- > > >CommonMaxUserVariableSpace)) { > > @@ -2156,7 +2156,7 @@ UpdateVariable ( > > CacheVariable->CurrPtr =3D (VARIABLE_HEADER *)((UINTN) > > CacheVariable->StartPtr + ((UINTN) Variable->CurrPtr - (UINTN) > > CacheVariable->Variable- > > >StartPtr)); > > CacheVariable->InDeletedTransitionPtr =3D NULL; > > } > > - UpdateVariableInfo (VariableName, VendorGuid, TRUE, FALSE, TRU= E, > > FALSE, FALSE); > > + UpdateVariableInfo (VariableName, VendorGuid, TRUE, FALSE, > > + TRUE, > > FALSE, FALSE, &gVariableInfo); > > } > > goto Done; > > } > > @@ -2227,7 +2227,7 @@ UpdateVariable ( > > } > > > > if (!EFI_ERROR (Status)) { > > - UpdateVariableInfo (VariableName, VendorGuid, Volatile, FALSE, TRU= E, > > FALSE, FALSE); > > + UpdateVariableInfo (VariableName, VendorGuid, Volatile, FALSE, > > + TRUE, > > FALSE, FALSE, &gVariableInfo); > > if (!Volatile) { > > FlushHobVariableToFlash (VariableName, VendorGuid); > > } > > @@ -2306,7 +2306,7 @@ VariableServiceGetVariable ( > > } > > > > *DataSize =3D VarDataSize; > > - UpdateVariableInfo (VariableName, VendorGuid, Variable.Volatile, > TRUE, > > FALSE, FALSE, FALSE); > > + UpdateVariableInfo (VariableName, VendorGuid, Variable.Volatile, > > + TRUE, > > FALSE, FALSE, FALSE, &gVariableInfo); > > > > Status =3D EFI_SUCCESS; > > goto Done; > > diff --git > > a/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableParsing.c > > b/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableParsing.c > > index 9bc5369a90..394195342d 100644 > > --- a/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableParsing.c > > +++ b/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableParsing.c > > @@ -660,13 +660,14 @@ Done: > > the transaction. Data is allocated by this routine, but never > > freed. > > > > - @param[in] VariableName Name of the Variable to track. > > - @param[in] VendorGuid Guid of the Variable to track. > > - @param[in] Volatile TRUE if volatile FALSE if non-volatile. > > - @param[in] Read TRUE if GetVariable() was called. > > - @param[in] Write TRUE if SetVariable() was called. > > - @param[in] Delete TRUE if deleted via SetVariable(). > > - @param[in] Cache TRUE for a cache hit. > > + @param[in] VariableName Name of the Variable to track. > > + @param[in] VendorGuid Guid of the Variable to track. > > + @param[in] Volatile TRUE if volatile FALSE if non-volatil= e. > > + @param[in] Read TRUE if GetVariable() was called. > > + @param[in] Write TRUE if SetVariable() was called. > > + @param[in] Delete TRUE if deleted via SetVariable(). > > + @param[in] Cache TRUE for a cache hit. > > + @param[in,out] VariableInfo Pointer to a pointer of > > VARIABLE_INFO_ENTRY structures. > > > > **/ > > VOID > > @@ -677,35 +678,38 @@ UpdateVariableInfo ( > > IN BOOLEAN Read, > > IN BOOLEAN Write, > > IN BOOLEAN Delete, > > - IN BOOLEAN Cache > > + IN BOOLEAN Cache, > > + IN OUT VARIABLE_INFO_ENTRY **VariableInfo > > ) > > { > > VARIABLE_INFO_ENTRY *Entry; > > > > if (FeaturePcdGet (PcdVariableCollectStatistics)) { > > - > > + if (VariableName =3D=3D NULL || VendorGuid =3D=3D NULL || Variable= Info =3D=3D > > NULL) { > > + return; > > + } > > if (AtRuntime ()) { > > // Don't collect statistics at runtime. > > return; > > } > > > > - if (gVariableInfo =3D=3D NULL) { > > + if (*VariableInfo =3D=3D NULL) { > > // > > // On the first call allocate a entry and place a pointer to it = in > > // the EFI System Table. > > // > > - gVariableInfo =3D AllocateZeroPool (sizeof (VARIABLE_INFO_ENTRY)= ); > > - ASSERT (gVariableInfo !=3D NULL); > > + *VariableInfo =3D AllocateZeroPool (sizeof (VARIABLE_INFO_ENTRY)= ); > > + ASSERT (*VariableInfo !=3D NULL); > > > > - CopyGuid (&gVariableInfo->VendorGuid, VendorGuid); > > - gVariableInfo->Name =3D AllocateZeroPool (StrSize (VariableName)= ); > > - ASSERT (gVariableInfo->Name !=3D NULL); > > - StrCpyS (gVariableInfo->Name, StrSize(VariableName)/sizeof(CHAR1= 6), > > VariableName); > > - gVariableInfo->Volatile =3D Volatile; > > + CopyGuid (&(*VariableInfo)->VendorGuid, VendorGuid); > > + (*VariableInfo)->Name =3D AllocateZeroPool (StrSize (VariableNam= e)); > > + ASSERT ((*VariableInfo)->Name !=3D NULL); > > + StrCpyS ((*VariableInfo)->Name, > > + StrSize(VariableName)/sizeof(CHAR16), > > VariableName); > > + (*VariableInfo)->Volatile =3D Volatile; > > } > > > > > > - for (Entry =3D gVariableInfo; Entry !=3D NULL; Entry =3D Entry->Ne= xt) { > > + for (Entry =3D (*VariableInfo); Entry !=3D NULL; Entry =3D Entry->= Next) > > + { > > if (CompareGuid (VendorGuid, &Entry->VendorGuid)) { > > if (StrCmp (VariableName, Entry->Name) =3D=3D 0) { > > if (Read) { > > @@ -739,7 +743,6 @@ UpdateVariableInfo ( > > StrCpyS (Entry->Next->Name, > > StrSize(VariableName)/sizeof(CHAR16), > > VariableName); > > Entry->Next->Volatile =3D Volatile; > > } > > - > > } > > } > > } > > -- > > 2.16.2.windows.1 >=20