|
@@ -133,6 +133,7 @@ static int wl_adapter_attach(struct pcmcia_device *link)
|
|
|
{
|
|
|
struct net_device *dev;
|
|
|
struct wl_private *lp;
|
|
|
+ int ret;
|
|
|
/*--------------------------------------------------------------------*/
|
|
|
|
|
|
DBG_FUNC("wl_adapter_attach");
|
|
@@ -154,10 +155,12 @@ static int wl_adapter_attach(struct pcmcia_device *link)
|
|
|
lp = wl_priv(dev);
|
|
|
lp->link = link;
|
|
|
|
|
|
- wl_adapter_insert(link);
|
|
|
+ ret = wl_adapter_insert(link);
|
|
|
+ if (ret != 0)
|
|
|
+ wl_device_dealloc(dev);
|
|
|
|
|
|
DBG_LEAVE(DbgInfo);
|
|
|
- return 0;
|
|
|
+ return ret;
|
|
|
} /* wl_adapter_attach */
|
|
|
/*============================================================================*/
|
|
|
|
|
@@ -224,7 +227,7 @@ static int wl_adapter_resume(struct pcmcia_device *link)
|
|
|
return 0;
|
|
|
} /* wl_adapter_resume */
|
|
|
|
|
|
-void wl_adapter_insert(struct pcmcia_device *link)
|
|
|
+int wl_adapter_insert(struct pcmcia_device *link)
|
|
|
{
|
|
|
struct net_device *dev;
|
|
|
int ret;
|
|
@@ -267,13 +270,13 @@ void wl_adapter_insert(struct pcmcia_device *link)
|
|
|
" %pM\n", dev->name, dev->base_addr, dev->irq, dev->dev_addr);
|
|
|
|
|
|
DBG_LEAVE(DbgInfo);
|
|
|
- return;
|
|
|
+ return 0;
|
|
|
|
|
|
failed:
|
|
|
wl_adapter_release(link);
|
|
|
|
|
|
DBG_LEAVE(DbgInfo);
|
|
|
- return;
|
|
|
+ return ret;
|
|
|
} /* wl_adapter_insert */
|
|
|
/*============================================================================*/
|
|
|
|