]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
net: emac: Fix NULL pointer dereference in emac_probe
authorRosen Penev <rosenp@gmail.com>
Thu, 18 Jun 2026 02:34:05 +0000 (19:34 -0700)
committerJakub Kicinski <kuba@kernel.org>
Sun, 21 Jun 2026 21:57:51 +0000 (14:57 -0700)
Move devm_request_irq() after devm_platform_ioremap_resource() so that
dev->emacp is mapped before the interrupt handler can fire.  An early
interrupt hitting emac_irq() would dereference the NULL dev->emacp and
crash.

Also remove redundant error message. devm_platform_ioremap_resource()
already returns an error message with dev_err_probe().

Fixes: dcc34ef7c834 ("net: ibm: emac: manage emac_irq with devm")
Signed-off-by: Rosen Penev <rosenp@gmail.com>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Link: https://patch.msgid.link/20260618023405.415644-1-rosenp@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/ibm/emac/core.c

index c0e1d85fce3fbbbb913934498ce91e43004ddda9..1d46cf6c2c127a3a0ba69f9c3906053743fb0cf3 100644 (file)
@@ -3044,6 +3044,12 @@ static int emac_probe(struct platform_device *ofdev)
        if (err)
                goto err_gone;
 
+       dev->emacp = devm_platform_ioremap_resource(ofdev, 0);
+       if (IS_ERR(dev->emacp)) {
+               err = PTR_ERR(dev->emacp);
+               goto err_gone;
+       }
+
        /* Setup error IRQ handler */
        dev->emac_irq = platform_get_irq(ofdev, 0);
        if (dev->emac_irq < 0) {
@@ -3061,13 +3067,6 @@ static int emac_probe(struct platform_device *ofdev)
 
        ndev->irq = dev->emac_irq;
 
-       dev->emacp = devm_platform_ioremap_resource(ofdev, 0);
-       if (IS_ERR(dev->emacp)) {
-               dev_err(&ofdev->dev, "can't map device registers");
-               err = PTR_ERR(dev->emacp);
-               goto err_gone;
-       }
-
        /* Wait for dependent devices */
        err = emac_wait_deps(dev);
        if (err)