History

Coccinelle: alloc_cast: Add more memory allocating functions to the list

Add more memory allocating functions that are frequently used in the kernel code to the existing list and remove the useless casts where it is unnecessary. But preserve those casts having __attribute__ such as __force, __iomem, etc. which are used by Sparse in the static analysis of the code. Also remove two blank lines at EOF.

Himanshu Jha committed 8 years ago

Commit d8e7eb51 parent cb00a4f1 file · +71 −21Browse files

Showing the changes to scripts (1 of 1 file). Show all

Unified · Split

scripts/coccinelle/api/alloc/alloc_cast.cocci+71−21
@@ -5,10 +5,11 @@ · 4 unmodified lines
55 //# kmalloc, kzalloc, kcalloc, kmem_cache_alloc, kmem_cache_zalloc,
66 //# kmem_cache_alloc_node, kmalloc_node and kzalloc_node and removes
77 //# the casting as it is not required. The result in the patch case may
8−//#need some reformatting.
8+//# need some reformatting.
99 //
1010 // Confidence: High
11−// Copyright: 2014, Himangi Saraogi GPLv2.
11+// Copyright: (C) 2014 Himangi Saraogi GPLv2.
12+// Copyright: (C) 2017 Himanshu Jha GPLv2.
1213 // Comments:
1314 // Options: --no-includes --include-headers
1415 //
@@ -18,55 +19,104 @@ virtual patch · 3 unmodified lines
1819 virtual org
1920 virtual report
2021
22+@initialize:python@
23+@@
24+import re
25+pattern = '__'
26+m = re.compile(pattern)
27+
28+@r1 depends on context || patch@
29+type T;
30+@@
31+
32+ (T *)
33+ \(kmalloc\|kzalloc\|kcalloc\|kmem_cache_alloc\|kmem_cache_zalloc\|
34+ kmem_cache_alloc_node\|kmalloc_node\|kzalloc_node\|vmalloc\|vzalloc\|
35+ dma_alloc_coherent\|dma_zalloc_coherent\|devm_kmalloc\|devm_kzalloc\|
36+ kvmalloc\|kvzalloc\|kvmalloc_node\|kvzalloc_node\|pci_alloc_consistent\|
37+ pci_zalloc_consistent\|kmem_alloc\|kmem_zalloc\|kmem_zone_alloc\|
38+ kmem_zone_zalloc\|vmalloc_node\|vzalloc_node\)(...)
39+
2140 //----------------------------------------------------------
2241 // For context mode
2342 //----------------------------------------------------------
2443
25−@depends on context@
26−type T;
44+@script:python depends on context@
45+t << r1.T;
46+@@
47+
48+if m.search(t) != None:
49+ cocci.include_match(False)
50+
51+@depends on context && r1@
52+type r1.T;
2753 @@
2854
2955 * (T *)
3056 \(kmalloc\|kzalloc\|kcalloc\|kmem_cache_alloc\|kmem_cache_zalloc\|
31− kmem_cache_alloc_node\|kmalloc_node\|kzalloc_node\)(...)
57+ kmem_cache_alloc_node\|kmalloc_node\|kzalloc_node\|vmalloc\|vzalloc\|
58+ dma_alloc_coherent\|dma_zalloc_coherent\|devm_kmalloc\|devm_kzalloc\|
59+ kvmalloc\|kvzalloc\|kvmalloc_node\|kvzalloc_node\|pci_alloc_consistent\|
60+ pci_zalloc_consistent\|kmem_alloc\|kmem_zalloc\|kmem_zone_alloc\|
61+ kmem_zone_zalloc\|vmalloc_node\|vzalloc_node\)(...)
3262
3363 //----------------------------------------------------------
3464 // For patch mode
3565 //----------------------------------------------------------
3666
37−@depends on patch@
38−type T;
67+@script:python depends on patch@
68+t << r1.T;
69+@@
70+
71+if m.search(t) != None:
72+ cocci.include_match(False)
73+
74+@depends on patch && r1@
75+type r1.T;
3976 @@
4077
4178 - (T *)
42− (\(kmalloc\|kzalloc\|kcalloc\|kmem_cache_alloc\|kmem_cache_zalloc\|
43− kmem_cache_alloc_node\|kmalloc_node\|kzalloc_node\)(...))
79+ \(kmalloc\|kzalloc\|kcalloc\|kmem_cache_alloc\|kmem_cache_zalloc\|
80+ kmem_cache_alloc_node\|kmalloc_node\|kzalloc_node\|vmalloc\|vzalloc\|
81+ dma_alloc_coherent\|dma_zalloc_coherent\|devm_kmalloc\|devm_kzalloc\|
82+ kvmalloc\|kvzalloc\|kvmalloc_node\|kvzalloc_node\|pci_alloc_consistent\|
83+ pci_zalloc_consistent\|kmem_alloc\|kmem_zalloc\|kmem_zone_alloc\|
84+ kmem_zone_zalloc\|vmalloc_node\|vzalloc_node\)(...)
4485
4586 //----------------------------------------------------------
4687 // For org and report mode
4788 //----------------------------------------------------------
4889
49−@r depends on org || report@
90+@r2 depends on org || report@
5091 type T;
5192 position p;
5293 @@
5394
54− (T@p *)\(kmalloc\|kzalloc\|kcalloc\|kmem_cache_alloc\|kmem_cache_zalloc\|
55− kmem_cache_alloc_node\|kmalloc_node\|kzalloc_node\)(...)
95+ (T@p *)
96+ \(kmalloc\|kzalloc\|kcalloc\|kmem_cache_alloc\|kmem_cache_zalloc\|
97+ kmem_cache_alloc_node\|kmalloc_node\|kzalloc_node\|vmalloc\|vzalloc\|
98+ dma_alloc_coherent\|dma_zalloc_coherent\|devm_kmalloc\|devm_kzalloc\|
99+ kvmalloc\|kvzalloc\|kvmalloc_node\|kvzalloc_node\|pci_alloc_consistent\|
100+ pci_zalloc_consistent\|kmem_alloc\|kmem_zalloc\|kmem_zone_alloc\|
101+ kmem_zone_zalloc\|vmalloc_node\|vzalloc_node\)(...)
56102
57103 @script:python depends on org@
58−p << r.p;
59−t << r.T;
104+p << r2.p;
105+t << r2.T;
60106 @@
61107
62−coccilib.org.print_safe_todo(p[0], t)
108+if m.search(t) != None:
109+ cocci.include_match(False)
110+else:
111+ coccilib.org.print_safe_todo(p[0], t)
63112
64113 @script:python depends on report@
65−p << r.p;
66−t << r.T;
114+p << r2.p;
115+t << r2.T;
67116 @@
68117
69−msg="WARNING: casting value returned by memory allocation function to (%s *) is useless." % (t)
70−coccilib.report.print_report(p[0], msg)
71−
72−
118+if m.search(t) != None:
119+ cocci.include_match(False)
120+else:
121+ msg="WARNING: casting value returned by memory allocation function to (%s *) is useless." % (t)
122+ coccilib.report.print_report(p[0], msg)