Reviewed-by: Ruiyu Ni <[email protected]>

>-----Original Message-----
>From: edk2-devel [mailto:[email protected]] On Behalf Of Lee 
>Leahy
>Sent: Friday, February 26, 2016 10:08 AM
>To: Ni, Ruiyu <[email protected]>; Bjorge, Erik C <[email protected]>; 
>[email protected]
>Subject: [edk2] [PATCH v4] DuetPkg-PciBusNoEnumerationDxe: Fix stack overflow
>
>When a PCI bridge is not enabled, the secondary bus may still be zero.
>This causes an infinite recursive call to enumerate bus 0 which results
>in a stack overflow.  The easy fix is to skip the recursive bus
>enumeration for bridges which do not have the secondary bus initialized.
>
>TEST=Build and run CorebootPayloadPkg on Quark/Galileo Gen2
>
>Contributed-under: TianoCore Contribution Agreement 1.0
>Signed-off-by: Lee Leahy <[email protected]>
>---
> DuetPkg/PciBusNoEnumerationDxe/PciEnumeratorSupport.c | 13 +++++++------
> 1 file changed, 7 insertions(+), 6 deletions(-)
>
>diff --git a/DuetPkg/PciBusNoEnumerationDxe/PciEnumeratorSupport.c
>b/DuetPkg/PciBusNoEnumerationDxe/PciEnumeratorSupport.c
>index 80b2b6b..6b7dceb 100644
>--- a/DuetPkg/PciBusNoEnumerationDxe/PciEnumeratorSupport.c
>+++ b/DuetPkg/PciBusNoEnumerationDxe/PciEnumeratorSupport.c
>@@ -257,13 +257,14 @@ Returns:
>           }
>
>           //
>-          // Deep enumerate the next level bus
>+          // If the PCI bridge is initialized then enumerate the next level 
>bus
>           //
>-          Status = PciPciDeviceInfoCollector (
>-                    PciIoDevice,
>-                    (UINT8) (SecBus)
>-                    );
>-
>+          if (SecBus != 0) {
>+            Status = PciPciDeviceInfoCollector (
>+                      PciIoDevice,
>+                      (UINT8) (SecBus)
>+                      );
>+          }
>         }
>
>         if (Func == 0 && !IS_PCI_MULTI_FUNC (&Pci)) {
>--
>1.9.1
>
>_______________________________________________
>edk2-devel mailing list
>[email protected]
>https://lists.01.org/mailman/listinfo/edk2-devel
_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to