[media] drivers/staging/media/as102/as102_usb_drv.c: shift position of allocation...
authorJulia Lawall <julia@diku.dk>
Fri, 23 Dec 2011 16:39:34 +0000 (13:39 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Fri, 6 Jan 2012 13:14:30 +0000 (11:14 -0200)
commiteabd0eaf4f390df102cd24a87300b0e5150cf189
treed75ba29e5b48a71f816633d9751286819cba9882
parent75e5ac7ea57ea56628f73a8a0aaf58f758aae43a
[media] drivers/staging/media/as102/as102_usb_drv.c: shift position of allocation code

The conditional after the kzalloc says that the tested expression should
never be true, but if it were, the allocated data would have to be freed.
This change just moves the allocation below the test, to avoid any
possibility of the problem.

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: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/staging/media/as102/as102_usb_drv.c