spi-topcliff-pch: Fix issue for transmitting over 4KByte
[zen-stable.git] / scripts / coccinelle / free / kfree.cocci
blobd9ae6d89c2f57e9db00a856f461b1f968cf07018
1 /// Find a use after free.
2 //# Values of variables may imply that some
3 //# execution paths are not possible, resulting in false positives.
4 //# Another source of false positives are macros such as
5 //# SCTP_DBG_OBJCNT_DEC that do not actually evaluate their argument
6 ///
7 // Confidence: Moderate
8 // Copyright: (C) 2010-2012 Nicolas Palix.  GPLv2.
9 // Copyright: (C) 2010-2012 Julia Lawall, INRIA/LIP6.  GPLv2.
10 // Copyright: (C) 2010-2012 Gilles Muller, INRIA/LiP6.  GPLv2.
11 // URL: http://coccinelle.lip6.fr/
12 // Comments:
13 // Options: -no_includes -include_headers
15 virtual org
16 virtual report
18 @free@
19 expression E;
20 position p1;
23 kfree@p1(E)
25 @print expression@
26 constant char [] c;
27 expression free.E,E2;
28 type T;
29 position p;
30 identifier f;
34  f(...,c,...,(T)E@p,...)
36  E@p == E2
38  E@p != E2
40  E2 == E@p
42  E2 != E@p
44  !E@p
46  E@p || ...
49 @sz@
50 expression free.E;
51 position p;
54  sizeof(<+...E@p...+>)
56 @loop exists@
57 expression E;
58 identifier l;
59 position ok;
62 while (1) { ...
63   kfree@ok(E)
64   ... when != break;
65       when != goto l;
66       when forall
69 @r exists@
70 expression free.E, subE<=free.E, E2;
71 expression E1;
72 iterator iter;
73 statement S;
74 position free.p1!=loop.ok,p2!={print.p,sz.p};
77 kfree@p1(E,...)
78 ...
80  iter(...,subE,...) S // no use
82  list_remove_head(E1,subE,...)
84  subE = E2
86  subE++
88  ++subE
90  --subE
92  subE--
94  &subE
96  BUG(...)
98  BUG_ON(...)
100  return_VALUE(...)
102  return_ACPI_STATUS(...)
104  E@p2 // bad use
107 @script:python depends on org@
108 p1 << free.p1;
109 p2 << r.p2;
112 cocci.print_main("kfree",p1)
113 cocci.print_secs("ref",p2)
115 @script:python depends on report@
116 p1 << free.p1;
117 p2 << r.p2;
120 msg = "ERROR: reference preceded by free on line %s" % (p1[0].line)
121 coccilib.report.print_report(p2[0],msg)