[PATCH 2/8] powerpc/pci: Don't scan empty slot
Gavin Shan
gwshan at linux.vnet.ibm.com
Wed Nov 26 10:57:24 AEDT 2014
On Wed, Nov 26, 2014 at 09:58:02AM +1100, Benjamin Herrenschmidt wrote:
>On Tue, 2014-11-25 at 09:49 +1100, Gavin Shan wrote:
>> In hotplug case, function pcibios_add_pci_devices() is called to
>> rescan the specified PCI bus, which possibly doesn't have any child
>> devices. Access to the PCI bus's child device node will cause kernel
>> crash without exception. The patch adds two more conditions to avoid
>> the kernel crash.
>>
>> Signed-off-by: Gavin Shan <gwshan at linux.vnet.ibm.com>
>> ---
>> arch/powerpc/kernel/pci-hotplug.c | 5 +++--
>> 1 file changed, 3 insertions(+), 2 deletions(-)
>>
>> diff --git a/arch/powerpc/kernel/pci-hotplug.c b/arch/powerpc/kernel/pci-hotplug.c
>> index 6e2b4e3..ea5513b 100644
>> --- a/arch/powerpc/kernel/pci-hotplug.c
>> +++ b/arch/powerpc/kernel/pci-hotplug.c
>> @@ -105,7 +105,7 @@ EXPORT_SYMBOL_GPL(pcibios_remove_pci_devices);
>> * is how this routine differs from other, similar pcibios
>> * routines.)
>> */
>> -void pcibios_add_pci_devices(struct pci_bus * bus)
>> +void pcibios_add_pci_devices(struct pci_bus *bus)
>
>Unrelated whitespace change
>
I'll remove this change out of the patch.
Thanks,
Gavin
>> {
>> int slotno, mode, pass, max;
>> struct pci_dev *dev;
>> @@ -120,7 +120,8 @@ void pcibios_add_pci_devices(struct pci_bus * bus)
>> if (mode == PCI_PROBE_DEVTREE) {
>> /* use ofdt-based probe */
>> of_rescan_bus(dn, bus);
>> - } else if (mode == PCI_PROBE_NORMAL) {
>> + } else if (mode == PCI_PROBE_NORMAL &&
>> + dn->child && PCI_DN(dn->child)) {
>> /*
>> * Use legacy probe. In the partial hotplug case, we
>> * probably have grandchildren devices unplugged. So
>
>
More information about the Linuxppc-dev
mailing list