Staging: rtl8192e: adjust error handling
authorHimangi Saraogi <himangi774@gmail.com>
Sat, 21 Jun 2014 15:09:51 +0000 (20:39 +0530)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 26 Jun 2014 23:59:06 +0000 (19:59 -0400)
This patch removes a test in error handling code by adding a return
path.

The Coccinelle semantic match that found the problem is:

// <smpl>
@@
expression E,E1,E2;
@@

E = alloc_etherdev(...)
... when != E = E1
if (...) { ... free_netdev(E); ... return ...; }
... when != E = E2
(
  if (...)
   {
   ... when != free_netdev(E);
   return dev; }
|
* if (...)
   {
   ... when != free_netdev(E);
   return ...; }
|
register_netdev(E)
)

// </smpl>

Signed-off-by: Himangi Saraogi <himangi774@gmail.com>
Acked-by: Julia Lawall <julia.lawall@lip6.fr>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/rtl8192e/rtllib_module.c

index 136909e..ba95149 100644 (file)
@@ -111,7 +111,7 @@ struct net_device *alloc_rtllib(int sizeof_priv)
        dev = alloc_etherdev(sizeof(struct rtllib_device) + sizeof_priv);
        if (!dev) {
                RTLLIB_ERROR("Unable to network device.\n");
-               goto failed;
+               return NULL;
        }
        ieee = (struct rtllib_device *)netdev_priv_rsl(dev);
        memset(ieee, 0, sizeof(struct rtllib_device)+sizeof_priv);
@@ -180,8 +180,7 @@ struct net_device *alloc_rtllib(int sizeof_priv)
        return dev;
 
  failed:
-       if (dev)
-               free_netdev(dev);
+       free_netdev(dev);
        return NULL;
 }
 EXPORT_SYMBOL(alloc_rtllib);