xref: /linux/scripts/coccinelle/api/alloc/pool_zalloc-simple.cocci (revision f83b8a58695cbf419beaa3f63b9d3e264792d8ea)
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
9//
10
11virtual context
12virtual patch
13virtual org
14virtual report
15
16//----------------------------------------------------------
17//  For context mode
18//----------------------------------------------------------
19
20@depends on context@
21expression x;
22statement S;
23@@
24
25* x = dma_pool_alloc(...);
26  if ((x==NULL) || ...) S
27* memset(x,0, ...);
28
29//----------------------------------------------------------
30//  For patch mode
31//----------------------------------------------------------
32
33@depends on patch@
34expression x;
35expression a,b,c;
36statement 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//----------------------------------------------------------
45//  For org and report mode
46//----------------------------------------------------------
47
48@r depends on org || report@
49expression x;
50expression a,b,c;
51statement S;
52position p;
53@@
54
55 x =@p dma_pool_alloc(a,b,c);
56 if ((x==NULL) || ...) S
57 memset(x,0, ...);
58
59@script:python depends on org@
60p << r.p;
61x << r.x;
62@@
63
64msg="%s" % (x)
65msg_safe=msg.replace("[","@(").replace("]",")")
66coccilib.org.print_todo(p[0], msg_safe)
67
68@script:python depends on report@
69p << r.p;
70x << r.x;
71@@
72
73msg="WARNING: *_pool_zalloc should be used for %s, instead of *_pool_alloc/memset" % (x)
74coccilib.report.print_report(p[0], msg)
75