mirror of https://github.com/acidanthera/audk.git
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 <leroy.p.leahy@intel.com> Reviewed-by: Ruiyu Ni <ruiyu.ni@intel.com>
This commit is contained in:
parent
e89d672110
commit
ba33c80fc5
|
@ -1,6 +1,6 @@
|
|||
/*++
|
||||
|
||||
Copyright (c) 2005 - 2014, Intel Corporation. All rights reserved.<BR>
|
||||
Copyright (c) 2005 - 2016, 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
|
||||
|
@ -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)) {
|
||||
|
|
Loading…
Reference in New Issue