From 6a8121572e2f2d188f04673bfa460ccfcedeb008 Mon Sep 17 00:00:00 2001 From: Marcelo Tosatti Date: Fri, 25 May 2007 12:09:13 -0400 Subject: [PATCH] [PATCH] libertas: fix error handling of card initialization Subject says it all. Signed-off-by: Marcelo Tosatti Signed-off-by: John W. Linville --- drivers/net/wireless/libertas/if_usb.c | 10 ++++++++-- drivers/net/wireless/libertas/main.c | 1 + 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/drivers/net/wireless/libertas/if_usb.c b/drivers/net/wireless/libertas/if_usb.c index 7ce57d4bcc..d4db8e668e 100644 --- a/drivers/net/wireless/libertas/if_usb.c +++ b/drivers/net/wireless/libertas/if_usb.c @@ -198,10 +198,10 @@ static int if_usb_probe(struct usb_interface *intf, goto dealloc; if (wlan_add_mesh(priv)) - goto dealloc; + goto err_add_mesh; if (libertas_activate_card(priv)) - goto dealloc; + goto err_activate_card; if (libertas_found < MAX_DEVS) { libertas_devs[libertas_found] = priv->wlan_dev.netdev; @@ -218,6 +218,12 @@ static int if_usb_probe(struct usb_interface *intf, */ return 0; +err_activate_card: + unregister_netdev(priv->mesh_dev); + free_netdev(priv->mesh_dev); +err_add_mesh: + free_netdev(priv->wlan_dev.netdev); + kfree(priv->adapter); dealloc: if_usb_free(usb_cardp); diff --git a/drivers/net/wireless/libertas/main.c b/drivers/net/wireless/libertas/main.c index 8990901088..5c58c50b43 100644 --- a/drivers/net/wireless/libertas/main.c +++ b/drivers/net/wireless/libertas/main.c @@ -823,6 +823,7 @@ wlan_private *wlan_add_card(void *card) err_kzalloc: free_netdev(dev); + priv = NULL; done: lbs_deb_leave_args(LBS_DEB_NET, "priv %p", priv); return priv; -- 2.39.5