]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/blob - scripts/coccinelle/misc/badty.cocci
Merge branch 'irq-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel...
[mirror_ubuntu-artful-kernel.git] / scripts / coccinelle / misc / badty.cocci
1 /// Use ARRAY_SIZE instead of dividing sizeof array with sizeof an element
2 ///
3 //# This makes an effort to find cases where the argument to sizeof is wrong
4 //# in memory allocation functions by checking the type of the allocated memory
5 //# when it is a double pointer and ensuring the sizeof argument takes a pointer
6 //# to the the memory being allocated. There are false positives in cases the
7 //# sizeof argument is not used in constructing the return value. The result
8 //# may need some reformatting.
9 //
10 // Confidence: Moderate
11 // Copyright: (C) 2014 Himangi Saraogi. GPLv2.
12 // Comments:
13 // Options:
14
15 virtual patch
16 virtual context
17 virtual org
18 virtual report
19
20 //----------------------------------------------------------
21 // For context mode
22 //----------------------------------------------------------
23
24 @depends on context disable sizeof_type_expr@
25 type T;
26 T **x;
27 @@
28
29 x =
30 <+...sizeof(
31 * T
32 )...+>
33
34 //----------------------------------------------------------
35 // For patch mode
36 //----------------------------------------------------------
37
38 @depends on patch disable sizeof_type_expr@
39 type T;
40 T **x;
41 @@
42
43 x =
44 <+...sizeof(
45 - T
46 + *x
47 )...+>
48
49 //----------------------------------------------------------
50 // For org and report mode
51 //----------------------------------------------------------
52
53 @r depends on (org || report) disable sizeof_type_expr@
54 type T;
55 T **x;
56 position p;
57 @@
58
59 x =
60 <+...sizeof(
61 T@p
62 )...+>
63
64 @script:python depends on org@
65 p << r.p;
66 @@
67
68 coccilib.org.print_todo(p[0], "WARNING sizeof argument should be pointer type, not structure type")
69
70 @script:python depends on report@
71 p << r.p;
72 @@
73
74 msg="WARNING: Use correct pointer type argument for sizeof"
75 coccilib.report.print_report(p[0], msg)
76