| From 47faccde0c01111a5ffede26b02223e7ec6cf9a8 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Tue, 12 Mar 2019 02:43:18 -0500 |
| Subject: net: sh_eth: fix a missing check of of_get_phy_mode |
| |
| From: Kangjie Lu <kjlu@umn.edu> |
| |
| [ Upstream commit 035a14e71f27eefa50087963b94cbdb3580d08bf ] |
| |
| of_get_phy_mode may fail and return a negative error code; |
| the fix checks the return value of of_get_phy_mode and |
| returns NULL of it fails. |
| |
| Fixes: b356e978e92f ("sh_eth: add device tree support") |
| Signed-off-by: Kangjie Lu <kjlu@umn.edu> |
| Reviewed-by: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com> |
| Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be> |
| Tested-by: Geert Uytterhoeven <geert+renesas@glider.be> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/net/ethernet/renesas/sh_eth.c | 6 +++++- |
| 1 file changed, 5 insertions(+), 1 deletion(-) |
| |
| diff --git a/drivers/net/ethernet/renesas/sh_eth.c b/drivers/net/ethernet/renesas/sh_eth.c |
| index 49300194d3f9f..6f8d4810ce979 100644 |
| --- a/drivers/net/ethernet/renesas/sh_eth.c |
| +++ b/drivers/net/ethernet/renesas/sh_eth.c |
| @@ -2929,12 +2929,16 @@ static struct sh_eth_plat_data *sh_eth_parse_dt(struct device *dev) |
| struct device_node *np = dev->of_node; |
| struct sh_eth_plat_data *pdata; |
| const char *mac_addr; |
| + int ret; |
| |
| pdata = devm_kzalloc(dev, sizeof(*pdata), GFP_KERNEL); |
| if (!pdata) |
| return NULL; |
| |
| - pdata->phy_interface = of_get_phy_mode(np); |
| + ret = of_get_phy_mode(np); |
| + if (ret < 0) |
| + return NULL; |
| + pdata->phy_interface = ret; |
| |
| mac_addr = of_get_mac_address(np); |
| if (mac_addr) |
| -- |
| 2.20.1 |
| |