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)
commit5632c827cbd3617613530ba0e99344192d0a31ca
tree374c8744a0280685434e6ecf1282df8834916d7e
parent30a0dee7806d099c709603e65aa08be0363ea49d
drivers/usb/dwc3/dwc3-pci.c: introduce missing kfree

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