diff options
author | Radha Mohan Chintakuntla <rchintakuntla@cavium.com> | 2015-07-28 18:12:12 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2015-07-29 20:17:44 -0400 |
commit | de9e397e40f56b9f34af4bf6a5bd7a75ea02456c (patch) | |
tree | c3ba6f411ce222f8f74e3e0e5b45d681e451e2d3 /drivers/net/phy/mdio-octeon.c | |
parent | a6d678645210f187a23c4715579a34152ce10af6 (diff) |
net: mdio-octeon: Fix octeon_mdiobus_probe function for return values
This patch fixes a possible crash in the octeon_mdiobus_probe function
if the return values are not handled properly.
Signed-off-by: Radha Mohan Chintakuntla <rchintakuntla@cavium.com>
Signed-off-by: Tomasz Nowicki <tomasz.nowicki@linaro.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/phy/mdio-octeon.c')
-rw-r--r-- | drivers/net/phy/mdio-octeon.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/drivers/net/phy/mdio-octeon.c b/drivers/net/phy/mdio-octeon.c index 1509937e93c0..fcf4e4df7cc8 100644 --- a/drivers/net/phy/mdio-octeon.c +++ b/drivers/net/phy/mdio-octeon.c | |||
@@ -277,24 +277,28 @@ static int octeon_mdiobus_probe(struct platform_device *pdev) | |||
277 | return -ENOMEM; | 277 | return -ENOMEM; |
278 | 278 | ||
279 | res_mem = platform_get_resource(pdev, IORESOURCE_MEM, 0); | 279 | res_mem = platform_get_resource(pdev, IORESOURCE_MEM, 0); |
280 | |||
281 | if (res_mem == NULL) { | 280 | if (res_mem == NULL) { |
282 | dev_err(&pdev->dev, "found no memory resource\n"); | 281 | dev_err(&pdev->dev, "found no memory resource\n"); |
283 | err = -ENXIO; | 282 | return -ENXIO; |
284 | goto fail; | ||
285 | } | 283 | } |
284 | |||
286 | bus->mdio_phys = res_mem->start; | 285 | bus->mdio_phys = res_mem->start; |
287 | bus->regsize = resource_size(res_mem); | 286 | bus->regsize = resource_size(res_mem); |
287 | |||
288 | if (!devm_request_mem_region(&pdev->dev, bus->mdio_phys, bus->regsize, | 288 | if (!devm_request_mem_region(&pdev->dev, bus->mdio_phys, bus->regsize, |
289 | res_mem->name)) { | 289 | res_mem->name)) { |
290 | dev_err(&pdev->dev, "request_mem_region failed\n"); | 290 | dev_err(&pdev->dev, "request_mem_region failed\n"); |
291 | goto fail; | 291 | return -ENXIO; |
292 | } | 292 | } |
293 | |||
293 | bus->register_base = | 294 | bus->register_base = |
294 | (u64)devm_ioremap(&pdev->dev, bus->mdio_phys, bus->regsize); | 295 | (u64)devm_ioremap(&pdev->dev, bus->mdio_phys, bus->regsize); |
296 | if (!bus->register_base) { | ||
297 | dev_err(&pdev->dev, "dev_ioremap failed\n"); | ||
298 | return -ENOMEM; | ||
299 | } | ||
295 | 300 | ||
296 | bus->mii_bus = mdiobus_alloc(); | 301 | bus->mii_bus = mdiobus_alloc(); |
297 | |||
298 | if (!bus->mii_bus) | 302 | if (!bus->mii_bus) |
299 | goto fail; | 303 | goto fail; |
300 | 304 | ||