drivers/usb/dwc3/dwc3-pci.c: introduce missing kfree
authorJulia Lawall <julia@diku.dk>
Fri, 23 Dec 2011 17:39:28 +0000 (18:39 +0100)
committerGreg Kroah-Hartman <gregkh@suse.de>
Wed, 4 Jan 2012 23:52:42 +0000 (15:52 -0800)
Glue needs to be freed on exiting the function in an error case.
Furthermore, pci, which is the first argument to the probe function should
not be freed before leaveing the function, as it is reused at the call
site.  So the free of pci is changed to free glue instead.

A simplified version of the semantic match that finds the problem is as
follows: (http://coccinelle.lip6.fr)

// <smpl>
@r exists@
local idexpression x;
statement S;
identifier f1;
position p1,p2;
expression *ptr != NULL;
@@

x@p1 = \(kmalloc\|kzalloc\|kcalloc\)(...);
...
if (x == NULL) S
<... when != x
     when != if (...) { <+...x...+> }
x->f1
...>
(
 return \(0\|<+...x...+>\|ptr\);
|
 return@p2 ...;
)

@script:python@
p1 << r.p1;
p2 << r.p2;
@@

print "* file: %s kmalloc %s return %s" % (p1[0].file,p1[0].line,p2[0].line)
// </smpl>

Signed-off-by: Julia Lawall <julia@diku.dk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/usb/dwc3/dwc3-pci.c

index cd1429f168c223c6baa944e1992de78a5a0c94e1..64e1f7c67b08ed374f36428868ad29fd42557bd9 100644 (file)
@@ -134,7 +134,7 @@ err2:
        pci_disable_device(pci);
 
 err1:
-       kfree(pci);
+       kfree(glue);
 
 err0:
        return ret;