Skip to content

Commit

Permalink
drivers/staging/rtl8192u/r8192U_core.c: Remove useless kfree
Browse files Browse the repository at this point in the history
Remove useless kfree() and clean up code related to the removal.

The semantic patch that finds this problem is as follows:
(http://coccinelle.lip6.fr/)

// <smpl>
@r exists@
position p1,p2;
expression x;
@@

if (x@p1 == NULL) { ... kfree@p2(x); ... return ...; }

@unchanged exists@
position r.p1,r.p2;
expression e <= r.x,x,e1;
iterator I;
statement S;
@@

if (x@p1 == NULL) { ... when != I(x,...) S
                        when != e = e1
                        when != e += e1
                        when != e -= e1
                        when != ++e
                        when != --e
                        when != e++
                        when != e--
                        when != &e
   kfree@p2(x); ... return ...; }

@ok depends on unchanged exists@
position any r.p1;
position r.p2;
expression x;
@@

... when != true x@p1 == NULL
kfree@p2(x);

@depends on !ok && unchanged@
position r.p2;
expression x;
@@

*kfree@p2(x);
// </smpl>

Signed-off-by: Peter Senna Tschudin <peter.senna@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  • Loading branch information
Peter Senna Tschudin authored and Greg Kroah-Hartman committed Sep 12, 2012
1 parent e66fc1f commit 2e464f0
Showing 1 changed file with 7 additions and 16 deletions.
23 changes: 7 additions & 16 deletions drivers/staging/rtl8192u/r8192U_core.c
Original file line number Diff line number Diff line change
Expand Up @@ -2232,24 +2232,15 @@ short rtl8192_usb_initendpoints(struct net_device *dev)
memset(priv->rx_urb, 0, sizeof(struct urb*) * MAX_RX_URB);
priv->pp_rxskb = kcalloc(MAX_RX_URB, sizeof(struct sk_buff *),
GFP_KERNEL);
if (priv->pp_rxskb == NULL)
goto destroy;

goto _middle;


destroy:
kfree(priv->pp_rxskb);
kfree(priv->rx_urb);

priv->pp_rxskb = NULL;
priv->rx_urb = NULL;

DMESGE("Endpoint Alloc Failure");
return -ENOMEM;
if (!priv->pp_rxskb) {
kfree(priv->rx_urb);

priv->pp_rxskb = NULL;
priv->rx_urb = NULL;

_middle:
DMESGE("Endpoint Alloc Failure");
return -ENOMEM;
}

printk("End of initendpoints\n");
return 0;
Expand Down

0 comments on commit 2e464f0

Please sign in to comment.