Skip to content

Commit

Permalink
ieee802154: fix error handling in ieee802154fake_probe()
Browse files Browse the repository at this point in the history
In case of any failure ieee802154fake_probe() just calls unregister_netdev().
But it does not look safe to unregister netdevice before it was registered.

The patch implements straightforward resource deallocation in case of
failure in ieee802154fake_probe().

Found by Linux Driver Verification project (linuxtesting.org).

Signed-off-by: Alexey Khoroshilov <khoroshilov@ispras.ru>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Alexey Khoroshilov authored and David S. Miller committed Nov 16, 2014
1 parent f1227c5 commit 8c2dd54
Showing 1 changed file with 8 additions and 5 deletions.
13 changes: 8 additions & 5 deletions drivers/net/ieee802154/fakehard.c
Original file line number Diff line number Diff line change
Expand Up @@ -377,17 +377,20 @@ static int ieee802154fake_probe(struct platform_device *pdev)

err = wpan_phy_register(phy);
if (err)
goto out;
goto err_phy_reg;

err = register_netdev(dev);
if (err < 0)
goto out;
if (err)
goto err_netdev_reg;

dev_info(&pdev->dev, "Added ieee802154 HardMAC hardware\n");
return 0;

out:
unregister_netdev(dev);
err_netdev_reg:
wpan_phy_unregister(phy);
err_phy_reg:
free_netdev(dev);
wpan_phy_free(phy);
return err;
}

Expand Down

0 comments on commit 8c2dd54

Please sign in to comment.