drivers/serial/crisv10.c: add missing put_tty_driver
authorJulia Lawall <julia@diku.dk>
Mon, 13 Oct 2008 09:31:37 +0000 (10:31 +0100)
committerLinus Torvalds <torvalds@linux-foundation.org>
Mon, 13 Oct 2008 16:51:37 +0000 (09:51 -0700)
commit41ca73229809eb3d173e316d11d3943d49924209
tree51ed68f3668a4c625ab9fda66b9b6e1dd6b2b90b
parent4fa971811cda4036d84574bfb38bd9b22b5c35ec
drivers/serial/crisv10.c: add missing put_tty_driver

alloc_tty_driver is called at the beginning of the function containing the
lines of code shown in the patch.  Thus, put_tty_driver is needed before
returning in the error handling code.

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

// <smpl>
@nr exists@
local idexpression x;
expression E,f;
position p1,p2,p3;
identifier l;
statement S;
@@

x = alloc_tty_driver@p1(...)
...
if (x == NULL) S
... when != E = x
    when != put_tty_driver(x)
    when != goto l;
(
return \(0\|x\);
|
return@p3 ...;
)

@script:python@
p1 << nr.p1;
p3 << nr.p3;
@@

print "%s: call on line %s not freed or saved before return on line %s" % (p1[0].file,p1[0].line,p3[0].line)
// </smpl>

Signed-off-by: Julia Lawall <julia@diku.dk>
Signed-off-by: Alan Cox <alan@redhat.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
drivers/serial/crisv10.c