Reviewed-by: Star Zeng <[email protected]>

-----Original Message-----
From: Ni, Ruiyu 
Sent: Thursday, July 27, 2017 11:06 AM
To: [email protected]
Cc: Zeng, Star <[email protected]>
Subject: [PATCH] MdeModulePkg/PciBus: Avoid hang when BUS pad resource is not 
in top

PciScanBus() assumes the GetResourcePadding() puts BUS descriptor in the very 
beginning, if it's not, the Descriptors will be updated to point to middle of 
the pool buffer, which can cause
FreePool(Descriptors) hang in DEBUG image.
No functionality impact to RELEASE image.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Ruiyu Ni <[email protected]>
Cc: Star Zeng <[email protected]>
---
 MdeModulePkg/Bus/Pci/PciBusDxe/PciLib.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/MdeModulePkg/Bus/Pci/PciBusDxe/PciLib.c 
b/MdeModulePkg/Bus/Pci/PciBusDxe/PciLib.c
index e1d62e8c21..8b076e8791 100644
--- a/MdeModulePkg/Bus/Pci/PciBusDxe/PciLib.c
+++ b/MdeModulePkg/Bus/Pci/PciBusDxe/PciLib.c
@@ -1,7 +1,7 @@
 /** @file
   Internal library implementation for PCI Bus module.
 
-Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2006 - 2017, Intel Corporation. All rights reserved.<BR>
 (C) Copyright 2015 Hewlett Packard Enterprise Development LP<BR>  This program 
and the accompanying materials  are licensed and made available under the terms 
and conditions of the BSD License @@ -986,6 +986,7 @@ PciScanBus (
   UINT64                            PciAddress;
   EFI_HPC_PADDING_ATTRIBUTES        Attributes;
   EFI_ACPI_ADDRESS_SPACE_DESCRIPTOR *Descriptors;
+  EFI_ACPI_ADDRESS_SPACE_DESCRIPTOR *NextDescriptors;
   UINT16                            BusRange;
   EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL   *PciRootBridgeIo;
   BOOLEAN                           BusPadding;
@@ -1143,8 +1144,9 @@ PciScanBus (
               }
 
               BusRange = 0;
+              NextDescriptors = Descriptors;
               Status = PciGetBusRange (
-                        &Descriptors,
+                        &NextDescriptors,
                         NULL,
                         NULL,
                         &BusRange
--
2.12.2.windows.2

_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to