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

Commit 2e1d4a06 authored by Lee Jones's avatar Lee Jones Committed by David S. Miller
Browse files

net/smsc911x: Repair broken failure paths



Current failure paths attempt to free resources which we failed to request
and disable resources which we failed to enable ones. This leads to kernel
oops/panic. This patch does some simple re-ordering to prevent this from
happening.

Cc: netdev@vger.kernel.org
Signed-off-by: default avatarLee Jones <lee.jones@linaro.org>
Acked-by: default avatarLinus Walleij <linus.walleij@linaro.org>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 3bbf372c
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -2390,11 +2390,11 @@ static int __devinit smsc911x_drv_probe(struct platform_device *pdev)

	retval = smsc911x_request_resources(pdev);
	if (retval)
		goto out_return_resources;
		goto out_request_resources_fail;

	retval = smsc911x_enable_resources(pdev);
	if (retval)
		goto out_disable_resources;
		goto out_enable_resources_fail;

	if (pdata->ioaddr == NULL) {
		SMSC_WARN(pdata, probe, "Error smsc911x base address invalid");
@@ -2501,8 +2501,9 @@ static int __devinit smsc911x_drv_probe(struct platform_device *pdev)
	free_irq(dev->irq, dev);
out_disable_resources:
	(void)smsc911x_disable_resources(pdev);
out_return_resources:
out_enable_resources_fail:
	smsc911x_free_resources(pdev);
out_request_resources_fail:
	platform_set_drvdata(pdev, NULL);
	iounmap(pdata->ioaddr);
	free_netdev(dev);