From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from us-smtp-delivery-162.mimecast.com (us-smtp-delivery-162.mimecast.com [170.10.133.162]) by mx.groups.io with SMTP id smtpd.web10.51672.1670342378530437821 for ; Tue, 06 Dec 2022 07:59:39 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@hp.com header.s=mimecast20180716 header.b=mb7sv2c4; spf=permerror, err=too many SPF records (domain: hp.com, ip: 170.10.133.162, mailfrom: anbazhagan@hp.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=hp.com; s=mimecast20180716; t=1670342377; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type; bh=ehqKgBleNkutidRhQ14R9wfDhlSq4xDPkiriIUvLw38=; b=mb7sv2c4FMm6Hg2jMXQqRW/Kjo8xcUCRngLZnRj37DqHJJvA7SgtexTslwUDRiAHEMz33h /msAUYPSWgD/T+cXZN3nNbfma3gxjrZUlmqCoZ/jzcD3UHZrnUlJkknwj4MRN7tmT0S7M3 6rpJn938JtTugFXxBoolYaVctG/vzBE= Received: from NAM02-BN1-obe.outbound.protection.outlook.com (mail-bn1nam02lp2049.outbound.protection.outlook.com [104.47.51.49]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-50-C8Z7VO7nOJSq9DNkazmEuw-1; Tue, 06 Dec 2022 10:59:36 -0500 X-MC-Unique: C8Z7VO7nOJSq9DNkazmEuw-1 Received: from DM4PR84MB1520.NAMPRD84.PROD.OUTLOOK.COM (2603:10b6:8:4b::12) by SJ0PR84MB1699.NAMPRD84.PROD.OUTLOOK.COM (2603:10b6:a03:432::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5880.14; Tue, 6 Dec 2022 15:59:34 +0000 Received: from DM4PR84MB1520.NAMPRD84.PROD.OUTLOOK.COM ([fe80::cad6:ea31:ec1c:4dc4]) by DM4PR84MB1520.NAMPRD84.PROD.OUTLOOK.COM ([fe80::cad6:ea31:ec1c:4dc4%6]) with mapi id 15.20.5880.014; Tue, 6 Dec 2022 15:59:34 +0000 From: "Anbazhagan, Baraneedharan" To: "devel@edk2.groups.io" Subject: MdeModulePkg/UefiBootManagerLib: Use hob size to process MemoryTypeInfo Thread-Topic: MdeModulePkg/UefiBootManagerLib: Use hob size to process MemoryTypeInfo Thread-Index: AdkJiDLC60b6SCUjQnGsXXAqGD6PgQ== Date: Tue, 6 Dec 2022 15:59:34 +0000 Message-ID: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: DM4PR84MB1520:EE_|SJ0PR84MB1699:EE_ x-ms-office365-filtering-correlation-id: c0342001-1390-4446-1cda-08dad7a2dec1 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0 x-microsoft-antispam-message-info: FISuBqKA0yaF+sXxI8IrkmY7oQJBEMbAoa0SxXRpJr84Wlu78/+0i5pQmcvRKmTArqboC/xEqs40uYM/Ja3H0CciMLSBZkcs5yetVTnj+AJVjAeQ12ktcNbxRaisIksrlsANTPv1fFYau5459B7JN/dQaOnlaXq7LOF5aM0DB5DqmZkAtSPeW4oIwb/M05KFs8WMMlxOfuUxtRzKJzPTe0/WYF0OLQpPE3Bsinys3I5b2evjGHWNbBFjmT3k9M1Wr8lVhKG5STH/xPZYXxUXKqfB6NJcnIw+ZLAz6l1q3XQ3ST/TNnwt5/7U1/2tnRMGLc6l5ZoPq00+G9GLjyigexY04vKoCyMrEgpxbW2CwRS9cXoNGW3mpsSg3wVHqbyTGmdRlgKxjLiKV+OjTEZMaNqn1FfAX/1JbVv078Usl1AoFuJb9qG1qlgbQ5qHpa728ZOZi29QDh08b9PmO30WtfeExBSJfOmLViIngT+l/76qIV2CqfhbDY+rt3MXtyu8EARPfExQM5c218wJrbe8uOz10o9loUldB3ppYEEo9mbM/mnl8gjyl4S6FFxdDgau56a1sFk8QZiNgak+lJgrubE0vPHwJRSOWlCAgFF5rFqPOJHqigLwhHiXq9I2ByN52wl7fd825wpG/UC6+wObH4ricFcDGH/YQDrrov9mcdVRmFfxvAR90FK0oAKTSLcywtj9G7lwVHkLTLZtzJFaUA== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM4PR84MB1520.NAMPRD84.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230022)(4636009)(376002)(136003)(366004)(39860400002)(396003)(346002)(451199015)(83380400001)(186003)(38100700002)(9686003)(8936002)(7696005)(122000001)(2906002)(6506007)(478600001)(8676002)(26005)(5660300002)(71200400001)(33656002)(52536014)(82960400001)(66556008)(64756008)(38070700005)(55016003)(66446008)(316002)(86362001)(76116006)(41300700001)(66946007)(66476007)(6916009);DIR:OUT;SFP:1102 x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?B/1KIl2m1ylK1kI0d7fZy5kEnzhAMZieOxAVY6Kv42cpOyVfyQinql1RsuD+?= =?us-ascii?Q?mshstn8SEVjjxSNMUkDfQoznY/C0BTc2FBXCF56OgMIt8de+lLSiui+c/l9q?= =?us-ascii?Q?QC+HpcOhQM0SjE9rbHqY4M0cbr0PcP9KNeOioo4icBqw0hc35g+b8ABqka1I?= =?us-ascii?Q?jl11LFS2UDxPnBz9PcbTSMYHHYawvfUZh5LlPRXiT5MhKGDTxENvCuDwCUFA?= =?us-ascii?Q?9usbKS6vKr32HRPlink8hewjj1RQEYXPAbvbWWb0+MRpFDXKcKWshD9pTz7v?= =?us-ascii?Q?VYK++yX+XKBgWmaEptFK3f8YU8vG6G4GqeoEY3nFhdvYRxt/6lrQ+LuywG0C?= =?us-ascii?Q?p2FV0O/ItKn/JCaql34cQpJ50csQt/C0Imw79RcxxyyX3KUr29b+xthslxW9?= =?us-ascii?Q?RTS7oE0IQ+CTi9W2hSyyFZDv7Auaj7wyvtC8XEmRlo1TOY563jcZZwCCT7Ip?= =?us-ascii?Q?hEXkeIs5oygwrWvtO3nrEc3CB6HPWCsNHUtpaqI+dHMyVGytsLNl12J846IY?= =?us-ascii?Q?u7aLlreV01aBA+SvHb+heVO/sRvrWXC5bMwLjAddIEF8+4SCESjreEbxi5g5?= =?us-ascii?Q?qwzEthPxH/P+zaNbwx0pQKmVdbeb4E5CpaXvGIdMEP0l+oxrhyi+ky+NjlW3?= =?us-ascii?Q?o1NZEmLvGKSi62f5vM/XvFhltUVq4Ws2zUeMszGxNbej031dip7lNdyvpkxZ?= =?us-ascii?Q?hPugVYLCTSPRQzKdUUnFJZl02bBmEpgRY2QgMsgXMeebjTlC/QWJK+VDFDoh?= =?us-ascii?Q?TNNOy/sioxVC6IL5em5yyRQqVUZ5uAzuYZ6pmfzTYBl82qeUwv6qf3ommeht?= =?us-ascii?Q?F16WcqoZbD0P3086X5fGlQRyEmN90bS7iccnQFEMVNBP1VLl6AmGN74pbBBy?= =?us-ascii?Q?nAlU3/N08EAy4f4jkUcWhcHO1hLSqA0zYPrkDR+dTiWAyU4yRrHFf0ORwHIv?= =?us-ascii?Q?Koa1Fzp1br+m9kiJhvGbHY4KioCNz60lchfqO7qcspwltYa7QGaae8ITsq5W?= =?us-ascii?Q?uRgagUgOwgHQ0+d682t3ehzlvfK7DiV5mUkV64G/e99O3EFKwPyi+H9WWmkp?= =?us-ascii?Q?GuWWVqpjBxBMkWsMnE/qUC556Od8D6NBVr4v0ngA7e58priTE9kqDwcNeDkS?= =?us-ascii?Q?3bPJJerudS1cW4EIplenELBH9WggPaieCezb7hL0K0FaiENYzRRTQkTVBC2n?= =?us-ascii?Q?jYZTsfe2EzBGDHuaKoQWcwOebz1yBp9KYbgZ74BH2PV3CJqxy3KsBK/Yh8VI?= =?us-ascii?Q?sQv5/6/R/58TUqCu+5823c0cpMUdSOlsPn0/L2+Ph75mcr4fxIZnVUCX1VBo?= =?us-ascii?Q?OUOJJRYXL6gMlUPwJfaGIj60qr0Cc51J/Bpgaf1MjR8Cv8JlLo2P6qT3eSi+?= =?us-ascii?Q?r/ev5Skhy575ucH0k9pB//Aq4cxTJ6FVwcm/4PfYo3I5VjM3FZYTj6/sUjZU?= =?us-ascii?Q?3NiNlrWhuc1FD1NaQpc15CTupTfFHoXcxclofRglhh+5agAVWeUnph+Q1bgB?= =?us-ascii?Q?lzfaJE+G5uHEroEyKYF2BHwySJ2gJhJ6Z1Quu7XYzkkzL9YH7pgbdsSysZam?= =?us-ascii?Q?tqvPzO1wTCaOgENEMhA=3D?= MIME-Version: 1.0 X-OriginatorOrg: hp.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM4PR84MB1520.NAMPRD84.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-Network-Message-Id: c0342001-1390-4446-1cda-08dad7a2dec1 X-MS-Exchange-CrossTenant-originalarrivaltime: 06 Dec 2022 15:59:34.7593 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: ca7981a2-785a-463d-b82a-3db87dfc3ce6 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: khC9JBGMxI8qE3JlB2LIWizD+OjMYfwyCS+UQHm6Gf+HFUnAWKTlDTnI9jg/8vV0Jn/kRL/oU+03IbaEFb5v+w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR84MB1699 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: hp.com Content-Language: en-US Content-Type: multipart/alternative; boundary="_000_DM4PR84MB15201D84190FA82987C84DE2BA1B9DM4PR84MB1520NAMP_" --_000_DM4PR84MB15201D84190FA82987C84DE2BA1B9DM4PR84MB1520NAMP_ Content-Type: text/plain; charset=WINDOWS-1252 Content-Transfer-Encoding: quoted-printable Current code relies on last entry in hob to be MaxMemoryType enum value which keeps changing on new memory type definition. If the HOB is created by binaries built with older Edk2, current code leads to hang which could be avoided by using hob size. Signed-off-by: Baraneedharan Anbazhagan anbazhagan@hp.com --- MdeModulePkg/Library/UefiBootManagerLib/BmMisc.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/MdeModulePkg/Library/UefiBootManagerLib/BmMisc.c b/MdeModulePk= g/Library/UefiBootManagerLib/BmMisc.c index a5e32ebdba..014e4557bf 100644 --- a/MdeModulePkg/Library/UefiBootManagerLib/BmMisc.c +++ b/MdeModulePkg/Library/UefiBootManagerLib/BmMisc.c @@ -140,6 +140,7 @@ BmSetMemoryTypeInformationVariable ( UINT32 Current; UINT32 Next; EFI_HOB_GUID_TYPE *GuidHob; + UINTN NoOfEntries; BOOLEAN MemoryTypeInformationModified; BOOLEAN MemoryTypeInformationVariableExists; EFI_BOOT_MODE BootMode; @@ -200,6 +201,7 @@ BmSetMemoryTypeInformationVariable ( } VariableSize =3D GET_GUID_HOB_DATA_SIZE (GuidHob); + NoOfEntries =3D VariableSize / sizeof(EFI_MEMORY_TYPE_= INFORMATION); PreviousMemoryTypeInformation =3D AllocateCopyPool (VariableSize, GET_GU= ID_HOB_DATA (GuidHob)); if (PreviousMemoryTypeInformation =3D=3D NULL) { return; @@ -212,8 +214,8 @@ BmSetMemoryTypeInformationVariable ( DEBUG ((DEBUG_INFO, " Type Pages Pages Pages \n")); DEBUG ((DEBUG_INFO, "=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=3D=3D=3D =3D= =3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=3D=3D=3D\n")); - for (Index =3D 0; PreviousMemoryTypeInformation[Index].Type !=3D EfiMaxM= emoryType; Index++) { - for (Index1 =3D 0; CurrentMemoryTypeInformation[Index1].Type !=3D EfiM= axMemoryType; Index1++) { + for (Index =3D 0; Index < NoOfEntries; Index++) { + for (Index1 =3D 0; Index1 < NoOfEntries; Index1++) { if (PreviousMemoryTypeInformation[Index].Type =3D=3D CurrentMemoryTy= peInformation[Index1].Type) { break; } -- 2.38.1.windows.1 --_000_DM4PR84MB15201D84190FA82987C84DE2BA1B9DM4PR84MB1520NAMP_ Content-Type: text/html; charset=WINDOWS-1252 Content-Transfer-Encoding: quoted-printable

Current code relies on last entry in hob to be MaxMe= moryType enum value

which keeps changing on new memory type definition. = If the HOB is

created by binaries built with older Edk2, current c= ode leads to hang

which could be avoided by using hob size.=

 

Signed-off-by: Baraneedharan Anbazhagan anbazhagan@hp.com

---

MdeModulePkg/Library/UefiBootManagerLib/BmMisc.c | 6= ++++--

1 file changed, 4 insertions(+), 2 deletions(-)=

 

diff --git a/MdeModulePkg/Library/UefiBootManagerLib= /BmMisc.c b/MdeModulePkg/Library/UefiBootManagerLib/BmMisc.c

index a5e32ebdba..014e4557bf 100644

--- a/MdeModulePkg/Library/UefiBootManagerLib/BmMisc= .c

+++ b/MdeModulePkg/Library/UefiBootManagerLib/BmMisc= .c

@@ -140,6 +140,7 @@ BmSetMemoryTypeInformationVariab= le (

   UINT32     &nb= sp;            =      Current;

   UINT32     &nb= sp;            =      Next;

   EFI_HOB_GUID_TYPE   &nbs= p;        *GuidHob;

+  UINTN      &nb= sp;            =      NoOfEntries;

   BOOLEAN     &n= bsp;            = ;    MemoryTypeInformationModified;

   BOOLEAN     &n= bsp;            = ;    MemoryTypeInformationVariableExists;

   EFI_BOOT_MODE    &n= bsp;           BootMode;<= o:p>

@@ -200,6 +201,7 @@ BmSetMemoryTypeInformationVariab= le (

   }

   VariableSize    &nb= sp;            =  =3D GET_GUID_HOB_DATA_SIZE (GuidHob);

+  NoOfEntries     &nb= sp;            = =3D VariableSize / sizeof(EFI_MEMORY_TYPE_INFORMATION);

   PreviousMemoryTypeInformation =3D Alloc= ateCopyPool (VariableSize, GET_GUID_HOB_DATA (GuidHob));

   if (PreviousMemoryTypeInformation =3D= =3D NULL) {

     return;

@@ -212,8 +214,8 @@ BmSetMemoryTypeInformationVariab= le (

   DEBUG ((DEBUG_INFO, " Type &n= bsp;  Pages     Pages     Page= s  \n"));

   DEBUG ((DEBUG_INFO, "=3D=3D=3D=3D= =3D=3D  =3D=3D=3D=3D=3D=3D=3D=3D  =3D=3D=3D=3D=3D=3D=3D=3D  = =3D=3D=3D=3D=3D=3D=3D=3D\n"));

-  for (Index =3D 0; PreviousMemoryTypeInformat= ion[Index].Type !=3D EfiMaxMemoryType; Index++) {

-    for (Index1 =3D 0; CurrentMemory= TypeInformation[Index1].Type !=3D EfiMaxMemoryType; Index1++) {<= /p>

+  for (Index =3D 0; Index < NoOfEntries; In= dex++) {

+    for (Index1 =3D 0; Index1 < N= oOfEntries; Index1++) {

       if (PreviousMem= oryTypeInformation[Index].Type =3D=3D CurrentMemoryTypeInformation[Index1].= Type) {

         bre= ak;

       }

--

2.38.1.windows.1

 

--_000_DM4PR84MB15201D84190FA82987C84DE2BA1B9DM4PR84MB1520NAMP_--