| From afb37f872d6e7c43200edfa28e0d2bcc4dee9103 Mon Sep 17 00:00:00 2001 |
| From: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com> |
| Date: Wed, 30 Oct 2013 23:30:19 +0300 |
| Subject: sh_eth: check platform data pointer |
| |
| 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> |
| (cherry picked from commit 3b4c5cbf42bda976ab70354e7786a0808265d9d5) |
| Signed-off-by: Simon Horman <horms+renesas@verge.net.au> |
| --- |
| drivers/net/ethernet/renesas/sh_eth.c | 6 ++++++ |
| 1 file changed, 6 insertions(+) |
| |
| diff --git a/drivers/net/ethernet/renesas/sh_eth.c b/drivers/net/ethernet/renesas/sh_eth.c |
| index 5ffaf56a0706..8bced1c44378 100644 |
| --- a/drivers/net/ethernet/renesas/sh_eth.c |
| +++ b/drivers/net/ethernet/renesas/sh_eth.c |
| @@ -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; |
| -- |
| 1.8.5.rc3 |
| |