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>
|
(C) Copyright 2015 Hewlett Packard Enterprise Development LP<BR>
|
||||||
This program and the accompanying materials
|
This program and the accompanying materials
|
||||||
are licensed and made available under the terms and conditions of the BSD License
|
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 (
|
if (SecBus != 0) {
|
||||||
PciIoDevice,
|
Status = PciPciDeviceInfoCollector (
|
||||||
(UINT8) (SecBus)
|
PciIoDevice,
|
||||||
);
|
(UINT8) (SecBus)
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Func == 0 && !IS_PCI_MULTI_FUNC (&Pci)) {
|
if (Func == 0 && !IS_PCI_MULTI_FUNC (&Pci)) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user