arch/x86/kernel/kdebugfs.c: introduce missing kfree
authorJulia Lawall <julia@diku.dk>
Wed, 10 Sep 2008 11:57:43 +0000 (13:57 +0200)
committerIngo Molnar <mingo@elte.hu>
Wed, 10 Sep 2008 12:03:49 +0000 (14:03 +0200)
commitf461a1d80c865e5ec4d24107adbab8b010b60e32
tree049854c288effeb876c67e6b9cc7d3caaad6bc11
parentadee14b2e1557d0a8559f29681732d05a89dfc35
arch/x86/kernel/kdebugfs.c: introduce missing kfree

Error handling code following a kmalloc should free the allocated data.
Note that at the point of the change, node has not yet been stored in d, so
it is not affected by the existing cleanup code.

The semantic match that finds the problem is as follows:
(http://www.emn.fr/x-info/coccinelle/)

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

(
if ((x@p1 = \(kmalloc\|kzalloc\|kcalloc\)(...)) == NULL) S
|
x@p1 = \(kmalloc\|kzalloc\|kcalloc\)(...);
...
if (x == NULL) S
)
<... when != x
     when != if (...) { <+...x...+> }
x->f = E
...>
(
 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: Ingo Molnar <mingo@elte.hu>
arch/x86/kernel/kdebugfs.c