Commit 0d55bc1c authored by Alexey Khoroshilov's avatar Alexey Khoroshilov Committed by Jiri Slaby

ieee802154: fix error handling in ieee802154fake_probe()

[ Upstream commit 8c2dd544 ]

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: default avatarAlexey Khoroshilov <khoroshilov@ispras.ru>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
Signed-off-by: default avatarJiri Slaby <jslaby@suse.cz>
parent 8cdc2cb0
...@@ -376,17 +376,20 @@ static int ieee802154fake_probe(struct platform_device *pdev) ...@@ -376,17 +376,20 @@ static int ieee802154fake_probe(struct platform_device *pdev)
err = wpan_phy_register(phy); err = wpan_phy_register(phy);
if (err) if (err)
goto out; goto err_phy_reg;
err = register_netdev(dev); err = register_netdev(dev);
if (err < 0) if (err)
goto out; goto err_netdev_reg;
dev_info(&pdev->dev, "Added ieee802154 HardMAC hardware\n"); dev_info(&pdev->dev, "Added ieee802154 HardMAC hardware\n");
return 0; return 0;
out: err_netdev_reg:
unregister_netdev(dev); wpan_phy_unregister(phy);
err_phy_reg:
free_netdev(dev);
wpan_phy_free(phy);
return err; return err;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment