2014-11-14 23:12:11

by Alexey Khoroshilov

[permalink] [raw]
Subject: [PATCH] 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: Alexey Khoroshilov <[email protected]>
---
drivers/net/ieee802154/fakehard.c | 13 ++++++++-----
1 file changed, 8 insertions(+), 5 deletions(-)

diff --git a/drivers/net/ieee802154/fakehard.c b/drivers/net/ieee802154/fakehard.c
index 9ce854f43917..6cbc56ad9ff4 100644
--- a/drivers/net/ieee802154/fakehard.c
+++ b/drivers/net/ieee802154/fakehard.c
@@ -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;
}

--
1.9.1


2014-11-15 07:16:17

by Alexander Aring

[permalink] [raw]
Subject: Re: [PATCH] ieee802154: fix error handling in ieee802154fake_probe()

Hi,

On Sat, Nov 15, 2014 at 02:11:59AM +0300, Alexey Khoroshilov wrote:
> 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).
>

Thanks for the patch! But I already delete the whole fakehard driver.
The patch to remove this driver is already in net-next.

There was too many issues with the fake hardMAC drivers and we don't
really supported a "real" hardMAC transceiver. For my rework to grab the
good things from wireless implementation and put 802.15.4 functionality
on it I simple delete the whole driver and _maybe_ add a new one with
the new introduced interfaces for possible hardMAC functionality.

This patch could go into bluetooth(net)/stable but I don't think that
there are many users for this driver.

- Alex

2014-11-15 07:58:37

by Marcel Holtmann

[permalink] [raw]
Subject: Re: [PATCH] ieee802154: fix error handling in ieee802154fake_probe()

Hi Alex,

>> 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).
>>
>
> Thanks for the patch! But I already delete the whole fakehard driver.
> The patch to remove this driver is already in net-next.
>
> There was too many issues with the fake hardMAC drivers and we don't
> really supported a "real" hardMAC transceiver. For my rework to grab the
> good things from wireless implementation and put 802.15.4 functionality
> on it I simple delete the whole driver and _maybe_ add a new one with
> the new introduced interfaces for possible hardMAC functionality.
>
> This patch could go into bluetooth(net)/stable but I don't think that
> there are many users for this driver.

I am not sure that this is worth it then.

Dave, do you want to just take it via net-stable tree? We currently have no urgent bluetooth-stable tree patches pending.

Regards

Marcel

2014-11-16 19:45:51

by David Miller

[permalink] [raw]
Subject: Re: [PATCH] ieee802154: fix error handling in ieee802154fake_probe()

From: Marcel Holtmann <[email protected]>
Date: Sat, 15 Nov 2014 16:58:28 +0900

> Dave, do you want to just take it via net-stable tree? We currently
> have no urgent bluetooth-stable tree patches pending.

Yeah I can do that, applied and queued up for -stable, thanks.