[PATCH net-next v3] net: davicom: Propagate wakeup IRQ errors

From: phucduc . bui

Date: Wed Sep 09 2026 - 00:58:21 EST


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

The wakeup IRQ is optional, but errors from platform_get_irq_optional()
are currently ignored. Propagate errors from the IRQ lookup, except
-ENXIO which indicates that the optional IRQ is not available.

Found by manual code inspection.

Signed-off-by: bui duc phuc <phucduc.bui@xxxxxxxxx>
---

Changes in v2:
- Add a Fixes: tag.
Changes in v3:
- Remove the goto statements for the error paths in request_irq()
and irq_set_irq_wake().
- Drop the Fixes: tag as this patch is intended for net-next.

drivers/net/ethernet/davicom/dm9000.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/davicom/dm9000.c b/drivers/net/ethernet/davicom/dm9000.c
index b87eaf0c250c..e294b365eb06 100644
--- a/drivers/net/ethernet/davicom/dm9000.c
+++ b/drivers/net/ethernet/davicom/dm9000.c
@@ -1511,7 +1511,11 @@ dm9000_probe(struct platform_device *pdev)
}

db->irq_wake = platform_get_irq_optional(pdev, 1);
- if (db->irq_wake >= 0) {
+ if (db->irq_wake < 0 && db->irq_wake != -ENXIO) {
+ ret = db->irq_wake;
+ goto out;
+ }
+ if (db->irq_wake > 0) {
dev_dbg(db->dev, "wakeup irq %d\n", db->irq_wake);

ret = request_irq(db->irq_wake, dm9000_wol_interrupt,
--
2.43.0