staging: wlags49_h2: fix error handling in pcmcia probe function
wl_adapter_attach() ignores some important issues such as register_netdev() failure. The patch fixes it. Found by Linux Driver Verification project (linuxtesting.org). Signed-off-by: Alexey Khoroshilov <khoroshilov@ispras.ru> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
d1d2f83f85
commit
657d4c86d4
|
@ -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 */
|
||||
/*============================================================================*/
|
||||
|
||||
|
|
|
@ -65,10 +65,10 @@
|
|||
|
||||
|
||||
/*******************************************************************************
|
||||
* function protoypes
|
||||
* function prototypes
|
||||
******************************************************************************/
|
||||
|
||||
void wl_adapter_insert(struct pcmcia_device *link);
|
||||
int wl_adapter_insert(struct pcmcia_device *link);
|
||||
|
||||
void wl_adapter_release(struct pcmcia_device *link);
|
||||
|
||||
|
|
Loading…
Reference in New Issue