[PATCH 3/4] net: systemport: Propagate IRQ lookup errors

From: phucduc . bui

Date: Thu Aug 20 2026 - 07:23:50 EST


From: bui duc phuc <phucduc.bui@xxxxxxxxx>

Propagate the error codes returned by platform_get_irq() and
platform_get_irq_optional() instead of converting them to -EINVAL.

For the optional WoL IRQ, allow -ENXIO to indicate that the IRQ is not
available, but propagate any other error returned by the IRQ lookup.

Found by manual code inspection.

Signed-off-by: bui duc phuc <phucduc.bui@xxxxxxxxx>
---
drivers/net/ethernet/broadcom/bcmsysport.c | 12 ++++++++++--
1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/drivers/net/ethernet/broadcom/bcmsysport.c b/drivers/net/ethernet/broadcom/bcmsysport.c
index 4d06c6ba6641..2acaffccdb08 100644
--- a/drivers/net/ethernet/broadcom/bcmsysport.c
+++ b/drivers/net/ethernet/broadcom/bcmsysport.c
@@ -2499,14 +2499,22 @@ static int bcm_sysport_probe(struct platform_device *pdev)
priv->num_rx_desc_words = params->num_rx_desc_words;

priv->irq0 = platform_get_irq(pdev, 0);
+ if (priv->irq0 < 0) {
+ ret = priv->irq0;
+ goto err_free_netdev;
+ }
if (!priv->is_lite) {
priv->irq1 = platform_get_irq(pdev, 1);
priv->wol_irq = platform_get_irq_optional(pdev, 2);
} else {
priv->wol_irq = platform_get_irq_optional(pdev, 1);
}
- if (priv->irq0 <= 0 || (priv->irq1 <= 0 && !priv->is_lite)) {
- ret = -EINVAL;
+ if (priv->irq1 < 0 && !priv->is_lite) {
+ ret = priv->irq1;
+ goto err_free_netdev;
+ }
+ if (priv->wol_irq < 0 && priv->wol_irq != -ENXIO) {
+ ret = priv->wol_irq;
goto err_free_netdev;
}

--
2.43.0