sh_eth: check platform data pointer
authorSergei Shtylyov <sergei.shtylyov@cogentembedded.com>
Wed, 30 Oct 2013 20:30:19 +0000 (23:30 +0300)
committerDavid S. Miller <davem@davemloft.net>
Mon, 4 Nov 2013 20:49:28 +0000 (15:49 -0500)
Check the platform data pointer before dereferencing it and error out of the
probe() method if it's NULL.

This has additional effect of preventing kernel oops with outdated platform data
containing zero PHY address instead (such as on SolutionEngine7710).

Signed-off-by: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
Acked-by: Simon Horman <horms+renesas@verge.net.au>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/renesas/sh_eth.c

index eaf11e47334fbcbca50cc8b6b27084f46f4b47c4..d256ce19d4de1cf6e93b51700b3ed8f5d813a3e0 100644 (file)
@@ -2663,6 +2663,12 @@ static int sh_eth_drv_probe(struct platform_device *pdev)
        pm_runtime_enable(&pdev->dev);
        pm_runtime_resume(&pdev->dev);
 
+       if (!pd) {
+               dev_err(&pdev->dev, "no platform data\n");
+               ret = -EINVAL;
+               goto out_release;
+       }
+
        /* get PHY ID */
        mdp->phy_id = pd->phy;
        mdp->phy_interface = pd->phy_interface;