Re: [PATCH 2/8] prism2_usb.c always enable the card in probe_usb

From: Oliver Neukum
Date: Mon Nov 03 2008 - 06:25:39 EST


Am Montag, 3. November 2008 12:13:48 schrieb Richard Kennedy:
> always enable card in probe_usb
> & update register_wlandev to match latest wlan-ng-dev tree.

This breaks both error cases.

> ---
> drivers/staging/wlan-ng/prism2_usb.c | 14 +++++++++-----
> 1 files changed, 9 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/staging/wlan-ng/prism2_usb.c b/drivers/staging/wlan-ng/prism2_usb.c
> index f1ae371..34a36c1 100644
> --- a/drivers/staging/wlan-ng/prism2_usb.c
> +++ b/drivers/staging/wlan-ng/prism2_usb.c
> @@ -110,11 +110,6 @@ static int prism2sta_probe_usb(
> * linux netdevice.
> */
> SET_NETDEV_DEV(wlandev->netdev, &(interface->dev));
> - if ( register_wlandev(wlandev) != 0 ) {
> - WLAN_LOG_ERROR("%s: register_wlandev() failed.\n", dev_info);
> - result = -EIO;
> - goto failed;
> - }
>
> /* Do a chip-level reset on the MAC */
> if (prism2_doreset) {

/* Do a chip-level reset on the MAC */
if (prism2_doreset) {
result = hfa384x_corereset(hw,
prism2_reset_holdtime,
prism2_reset_settletime, 0);
if (result != 0) {
unregister_wlandev(wlandev);

You must remove the unregister_wlandev here.

> @@ -138,6 +133,15 @@ static int prism2sta_probe_usb(
>
> wlandev->msdstate = WLAN_MSD_HWPRESENT;
>
> + if ( register_wlandev(wlandev) != 0 ) {
> + WLAN_LOG_ERROR("%s: register_wlandev() failed.\n", dev_info);
> + result = -EIO;
> + goto failed;

"failed" fails to undo usb_get_dev() which it must do if you jump there
from this late.

Regards
Oliver
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/