9c61a23b34db1faf1731e0347b6cc9dc6185e9b4
[releases.git] / pool_zalloc-simple.cocci
1 // SPDX-License-Identifier: GPL-2.0-only
2 ///
3 /// Use *_pool_zalloc rather than *_pool_alloc followed by memset with 0
4 ///
5 // Copyright: (C) 2015 Intel Corp.
6 // Options: --no-includes --include-headers
7 //
8 // Keywords: dma_pool_zalloc, pci_pool_zalloc
9 //
10
11 virtual context
12 virtual patch
13 virtual org
14 virtual report
15
16 //----------------------------------------------------------
17 //  For context mode
18 //----------------------------------------------------------
19
20 @depends on context@
21 expression x;
22 statement S;
23 @@
24
25 * x = \(dma_pool_alloc\|pci_pool_alloc\)(...);
26   if ((x==NULL) || ...) S
27 * memset(x,0, ...);
28
29 //----------------------------------------------------------
30 //  For patch mode
31 //----------------------------------------------------------
32
33 @depends on patch@
34 expression x;
35 expression a,b,c;
36 statement S;
37 @@
38
39 - x = dma_pool_alloc(a,b,c);
40 + x = dma_pool_zalloc(a,b,c);
41   if ((x==NULL) || ...) S
42 - memset(x,0,...);
43
44 @depends on patch@
45 expression x;
46 expression a,b,c;
47 statement S;
48 @@
49
50 - x = pci_pool_alloc(a,b,c);
51 + x = pci_pool_zalloc(a,b,c);
52   if ((x==NULL) || ...) S
53 - memset(x,0,...);
54
55 //----------------------------------------------------------
56 //  For org and report mode
57 //----------------------------------------------------------
58
59 @r depends on org || report@
60 expression x;
61 expression a,b,c;
62 statement S;
63 position p;
64 @@
65
66  x = @p\(dma_pool_alloc\|pci_pool_alloc\)(a,b,c);
67  if ((x==NULL) || ...) S
68  memset(x,0, ...);
69
70 @script:python depends on org@
71 p << r.p;
72 x << r.x;
73 @@
74
75 msg="%s" % (x)
76 msg_safe=msg.replace("[","@(").replace("]",")")
77 coccilib.org.print_todo(p[0], msg_safe)
78
79 @script:python depends on report@
80 p << r.p;
81 x << r.x;
82 @@
83
84 msg="WARNING: *_pool_zalloc should be used for %s, instead of *_pool_alloc/memset" % (x)
85 coccilib.report.print_report(p[0], msg)