[PATCH v2 5/5] PCI: shpchp: Check pci_hp_add_bridge() return value

From: Fahmy Hassan

Date: Tue Sep 08 2026 - 22:25:44 EST


shpchp_configure_device() calls pci_hp_add_bridge() for each bridge on
the newly added slot without checking its return value.
pci_hp_add_bridge() already logs an error for one failure path (no
bus number available for the hot-added bridge), but returns silently
if the bridge's subordinate bus isn't created after scanning -- that
path goes completely unreported, and either way the caller currently
has no way to notice or react to the failure.

Log an error via the driver's existing ctrl_err() macro when
pci_hp_add_bridge() fails, identifying the device involved.

Signed-off-by: Fahmy Hassan <fahmymohammed@xxxxxxxxx>
---
drivers/pci/hotplug/shpchp_pci.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/pci/hotplug/shpchp_pci.c b/drivers/pci/hotplug/shpchp_pci.c
index 36db0c3c4ea6..b9b18879b8ab 100644
--- a/drivers/pci/hotplug/shpchp_pci.c
+++ b/drivers/pci/hotplug/shpchp_pci.c
@@ -48,8 +48,9 @@ int shpchp_configure_device(struct slot *p_slot)
}

for_each_pci_bridge(dev, parent) {
- if (PCI_SLOT(dev->devfn) == p_slot->device)
- pci_hp_add_bridge(dev);
+ if (PCI_SLOT(dev->devfn) == p_slot->device &&
+ pci_hp_add_bridge(dev))
+ ctrl_err(ctrl, "pci_hp_add_bridge(%s) failed\n", pci_name(dev));
}

pci_assign_unassigned_bridge_resources(bridge);
--
2.53.0