Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8c2dd544 authored by Alexey Khoroshilov's avatar Alexey Khoroshilov Committed by David S. Miller
Browse files

ieee802154: fix error handling in ieee802154fake_probe()



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>
parent f1227c5c
Loading
Loading
Loading
Loading
+8 −5
Original line number Diff line number Diff line
@@ -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;
}