]> git.baikalelectronics.ru Git - kernel.git/commit
[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)
commit3db9c10337a570ca11d7f8bd5d0ef25e9bf79a7d
treed75ba29e5b48a71f816633d9751286819cba9882
parent1b695e6ef341ef2c362b1206a3cd3ff5cc091cc6
[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