xref: /OK3568_Linux_fs/kernel/scripts/coccinelle/api/alloc/zalloc-simple.cocci (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun// SPDX-License-Identifier: GPL-2.0-only
2*4882a593Smuzhiyun///
3*4882a593Smuzhiyun/// Use zeroing allocator rather than allocator followed by memset with 0
4*4882a593Smuzhiyun///
5*4882a593Smuzhiyun/// This considers some simple cases that are common and easy to validate
6*4882a593Smuzhiyun/// Note in particular that there are no ...s in the rule, so all of the
7*4882a593Smuzhiyun/// matched code has to be contiguous
8*4882a593Smuzhiyun///
9*4882a593Smuzhiyun// Confidence: High
10*4882a593Smuzhiyun// Copyright: (C) 2009-2010 Julia Lawall, Nicolas Palix, DIKU.
11*4882a593Smuzhiyun// Copyright: (C) 2009-2010 Gilles Muller, INRIA/LiP6.
12*4882a593Smuzhiyun// Copyright: (C) 2017 Himanshu Jha
13*4882a593Smuzhiyun// URL: http://coccinelle.lip6.fr/rules/kzalloc.html
14*4882a593Smuzhiyun// Options: --no-includes --include-headers
15*4882a593Smuzhiyun//
16*4882a593Smuzhiyun// Keywords: kmalloc, kzalloc
17*4882a593Smuzhiyun// Version min: < 2.6.12 kmalloc
18*4882a593Smuzhiyun// Version min:   2.6.14 kzalloc
19*4882a593Smuzhiyun//
20*4882a593Smuzhiyun
21*4882a593Smuzhiyunvirtual context
22*4882a593Smuzhiyunvirtual patch
23*4882a593Smuzhiyunvirtual org
24*4882a593Smuzhiyunvirtual report
25*4882a593Smuzhiyun
26*4882a593Smuzhiyun//----------------------------------------------------------
27*4882a593Smuzhiyun//  For context mode
28*4882a593Smuzhiyun//----------------------------------------------------------
29*4882a593Smuzhiyun
30*4882a593Smuzhiyun@depends on context@
31*4882a593Smuzhiyuntype T, T2;
32*4882a593Smuzhiyunexpression x;
33*4882a593Smuzhiyunexpression E1;
34*4882a593Smuzhiyunstatement S;
35*4882a593Smuzhiyun@@
36*4882a593Smuzhiyun
37*4882a593Smuzhiyun* x = (T)\(kmalloc(E1, ...)\|vmalloc(E1)\|dma_alloc_coherent(...,E1,...)\|
38*4882a593Smuzhiyun  kmalloc_node(E1, ...)\|kmem_cache_alloc(...)\|kmem_alloc(E1, ...)\|
39*4882a593Smuzhiyun  devm_kmalloc(...,E1,...)\|kvmalloc(E1, ...)\|kvmalloc_node(E1,...)\);
40*4882a593Smuzhiyun  if ((x==NULL) || ...) S
41*4882a593Smuzhiyun* memset((T2)x,0,E1);
42*4882a593Smuzhiyun
43*4882a593Smuzhiyun//----------------------------------------------------------
44*4882a593Smuzhiyun//  For patch mode
45*4882a593Smuzhiyun//----------------------------------------------------------
46*4882a593Smuzhiyun
47*4882a593Smuzhiyun@depends on patch@
48*4882a593Smuzhiyuntype T, T2;
49*4882a593Smuzhiyunexpression x;
50*4882a593Smuzhiyunexpression E1,E2,E3,E4;
51*4882a593Smuzhiyunstatement S;
52*4882a593Smuzhiyun@@
53*4882a593Smuzhiyun
54*4882a593Smuzhiyun(
55*4882a593Smuzhiyun- x = kmalloc(E1,E2);
56*4882a593Smuzhiyun+ x = kzalloc(E1,E2);
57*4882a593Smuzhiyun|
58*4882a593Smuzhiyun- x = (T *)kmalloc(E1,E2);
59*4882a593Smuzhiyun+ x = kzalloc(E1,E2);
60*4882a593Smuzhiyun|
61*4882a593Smuzhiyun- x = (T)kmalloc(E1,E2);
62*4882a593Smuzhiyun+ x = (T)kzalloc(E1,E2);
63*4882a593Smuzhiyun|
64*4882a593Smuzhiyun- x = vmalloc(E1);
65*4882a593Smuzhiyun+ x = vzalloc(E1);
66*4882a593Smuzhiyun|
67*4882a593Smuzhiyun- x = (T *)vmalloc(E1);
68*4882a593Smuzhiyun+ x = vzalloc(E1);
69*4882a593Smuzhiyun|
70*4882a593Smuzhiyun- x = (T)vmalloc(E1);
71*4882a593Smuzhiyun+ x = (T)vzalloc(E1);
72*4882a593Smuzhiyun|
73*4882a593Smuzhiyun- x = kmalloc_node(E1,E2,E3);
74*4882a593Smuzhiyun+ x = kzalloc_node(E1,E2,E3);
75*4882a593Smuzhiyun|
76*4882a593Smuzhiyun- x = (T *)kmalloc_node(E1,E2,E3);
77*4882a593Smuzhiyun+ x = kzalloc_node(E1,E2,E3);
78*4882a593Smuzhiyun|
79*4882a593Smuzhiyun- x = (T)kmalloc_node(E1,E2,E3);
80*4882a593Smuzhiyun+ x = (T)kzalloc_node(E1,E2,E3);
81*4882a593Smuzhiyun|
82*4882a593Smuzhiyun- x = kmem_cache_alloc(E3,E4);
83*4882a593Smuzhiyun+ x = kmem_cache_zalloc(E3,E4);
84*4882a593Smuzhiyun|
85*4882a593Smuzhiyun- x = (T *)kmem_cache_alloc(E3,E4);
86*4882a593Smuzhiyun+ x = kmem_cache_zalloc(E3,E4);
87*4882a593Smuzhiyun|
88*4882a593Smuzhiyun- x = (T)kmem_cache_alloc(E3,E4);
89*4882a593Smuzhiyun+ x = (T)kmem_cache_zalloc(E3,E4);
90*4882a593Smuzhiyun|
91*4882a593Smuzhiyun- x = kmem_alloc(E1,E2);
92*4882a593Smuzhiyun+ x = kmem_zalloc(E1,E2);
93*4882a593Smuzhiyun|
94*4882a593Smuzhiyun- x = (T *)kmem_alloc(E1,E2);
95*4882a593Smuzhiyun+ x = kmem_zalloc(E1,E2);
96*4882a593Smuzhiyun|
97*4882a593Smuzhiyun- x = (T)kmem_alloc(E1,E2);
98*4882a593Smuzhiyun+ x = (T)kmem_zalloc(E1,E2);
99*4882a593Smuzhiyun|
100*4882a593Smuzhiyun- x = devm_kmalloc(E2,E1,E3);
101*4882a593Smuzhiyun+ x = devm_kzalloc(E2,E1,E3);
102*4882a593Smuzhiyun|
103*4882a593Smuzhiyun- x = (T *)devm_kmalloc(E2,E1,E3);
104*4882a593Smuzhiyun+ x = devm_kzalloc(E2,E1,E3);
105*4882a593Smuzhiyun|
106*4882a593Smuzhiyun- x = (T)devm_kmalloc(E2,E1,E3);
107*4882a593Smuzhiyun+ x = (T)devm_kzalloc(E2,E1,E3);
108*4882a593Smuzhiyun|
109*4882a593Smuzhiyun- x = kvmalloc(E1,E2);
110*4882a593Smuzhiyun+ x = kvzalloc(E1,E2);
111*4882a593Smuzhiyun|
112*4882a593Smuzhiyun- x = (T *)kvmalloc(E1,E2);
113*4882a593Smuzhiyun+ x = kvzalloc(E1,E2);
114*4882a593Smuzhiyun|
115*4882a593Smuzhiyun- x = (T)kvmalloc(E1,E2);
116*4882a593Smuzhiyun+ x = (T)kvzalloc(E1,E2);
117*4882a593Smuzhiyun|
118*4882a593Smuzhiyun- x = kvmalloc_node(E1,E2,E3);
119*4882a593Smuzhiyun+ x = kvzalloc_node(E1,E2,E3);
120*4882a593Smuzhiyun|
121*4882a593Smuzhiyun- x = (T *)kvmalloc_node(E1,E2,E3);
122*4882a593Smuzhiyun+ x = kvzalloc_node(E1,E2,E3);
123*4882a593Smuzhiyun|
124*4882a593Smuzhiyun- x = (T)kvmalloc_node(E1,E2,E3);
125*4882a593Smuzhiyun+ x = (T)kvzalloc_node(E1,E2,E3);
126*4882a593Smuzhiyun)
127*4882a593Smuzhiyun  if ((x==NULL) || ...) S
128*4882a593Smuzhiyun- memset((T2)x,0,E1);
129*4882a593Smuzhiyun
130*4882a593Smuzhiyun@depends on patch@
131*4882a593Smuzhiyuntype T, T2;
132*4882a593Smuzhiyunexpression x;
133*4882a593Smuzhiyunexpression E1,E2,E3,E4;
134*4882a593Smuzhiyunstatement S;
135*4882a593Smuzhiyun@@
136*4882a593Smuzhiyun  x = (T)dma_alloc_coherent(E1, E2, E3, E4);
137*4882a593Smuzhiyun  if ((x==NULL) || ...) S
138*4882a593Smuzhiyun- memset((T2)x, 0, E2);
139*4882a593Smuzhiyun
140*4882a593Smuzhiyun//----------------------------------------------------------
141*4882a593Smuzhiyun//  For org mode
142*4882a593Smuzhiyun//----------------------------------------------------------
143*4882a593Smuzhiyun
144*4882a593Smuzhiyun@r depends on org || report@
145*4882a593Smuzhiyuntype T, T2;
146*4882a593Smuzhiyunexpression x;
147*4882a593Smuzhiyunexpression E1,E2;
148*4882a593Smuzhiyunstatement S;
149*4882a593Smuzhiyunposition p;
150*4882a593Smuzhiyun@@
151*4882a593Smuzhiyun
152*4882a593Smuzhiyun x = (T)kmalloc@p(E1,E2);
153*4882a593Smuzhiyun if ((x==NULL) || ...) S
154*4882a593Smuzhiyun memset((T2)x,0,E1);
155*4882a593Smuzhiyun
156*4882a593Smuzhiyun@script:python depends on org@
157*4882a593Smuzhiyunp << r.p;
158*4882a593Smuzhiyunx << r.x;
159*4882a593Smuzhiyun@@
160*4882a593Smuzhiyun
161*4882a593Smuzhiyunmsg="%s" % (x)
162*4882a593Smuzhiyunmsg_safe=msg.replace("[","@(").replace("]",")")
163*4882a593Smuzhiyuncoccilib.org.print_todo(p[0], msg_safe)
164*4882a593Smuzhiyun
165*4882a593Smuzhiyun@script:python depends on report@
166*4882a593Smuzhiyunp << r.p;
167*4882a593Smuzhiyunx << r.x;
168*4882a593Smuzhiyun@@
169*4882a593Smuzhiyun
170*4882a593Smuzhiyunmsg="WARNING: kzalloc should be used for %s, instead of kmalloc/memset" % (x)
171*4882a593Smuzhiyuncoccilib.report.print_report(p[0], msg)
172*4882a593Smuzhiyun
173*4882a593Smuzhiyun//-----------------------------------------------------------------
174*4882a593Smuzhiyun@r1 depends on org || report@
175*4882a593Smuzhiyuntype T, T2;
176*4882a593Smuzhiyunexpression x;
177*4882a593Smuzhiyunexpression E1;
178*4882a593Smuzhiyunstatement S;
179*4882a593Smuzhiyunposition p;
180*4882a593Smuzhiyun@@
181*4882a593Smuzhiyun
182*4882a593Smuzhiyun x = (T)vmalloc@p(E1);
183*4882a593Smuzhiyun if ((x==NULL) || ...) S
184*4882a593Smuzhiyun memset((T2)x,0,E1);
185*4882a593Smuzhiyun
186*4882a593Smuzhiyun@script:python depends on org@
187*4882a593Smuzhiyunp << r1.p;
188*4882a593Smuzhiyunx << r1.x;
189*4882a593Smuzhiyun@@
190*4882a593Smuzhiyun
191*4882a593Smuzhiyunmsg="%s" % (x)
192*4882a593Smuzhiyunmsg_safe=msg.replace("[","@(").replace("]",")")
193*4882a593Smuzhiyuncoccilib.org.print_todo(p[0], msg_safe)
194*4882a593Smuzhiyun
195*4882a593Smuzhiyun@script:python depends on report@
196*4882a593Smuzhiyunp << r1.p;
197*4882a593Smuzhiyunx << r1.x;
198*4882a593Smuzhiyun@@
199*4882a593Smuzhiyun
200*4882a593Smuzhiyunmsg="WARNING: vzalloc should be used for %s, instead of vmalloc/memset" % (x)
201*4882a593Smuzhiyuncoccilib.report.print_report(p[0], msg)
202*4882a593Smuzhiyun
203*4882a593Smuzhiyun//-----------------------------------------------------------------
204*4882a593Smuzhiyun@r2 depends on org || report@
205*4882a593Smuzhiyuntype T, T2;
206*4882a593Smuzhiyunexpression x;
207*4882a593Smuzhiyunexpression E1,E2,E3,E4;
208*4882a593Smuzhiyunstatement S;
209*4882a593Smuzhiyunposition p;
210*4882a593Smuzhiyun@@
211*4882a593Smuzhiyun
212*4882a593Smuzhiyun x = (T)dma_alloc_coherent@p(E1,E2,E3,E4);
213*4882a593Smuzhiyun if ((x==NULL) || ...) S
214*4882a593Smuzhiyun memset((T2)x,0,E2);
215*4882a593Smuzhiyun
216*4882a593Smuzhiyun@script:python depends on org@
217*4882a593Smuzhiyunp << r2.p;
218*4882a593Smuzhiyunx << r2.x;
219*4882a593Smuzhiyun@@
220*4882a593Smuzhiyun
221*4882a593Smuzhiyunmsg="%s" % (x)
222*4882a593Smuzhiyunmsg_safe=msg.replace("[","@(").replace("]",")")
223*4882a593Smuzhiyuncoccilib.org.print_todo(p[0], msg_safe)
224*4882a593Smuzhiyun
225*4882a593Smuzhiyun@script:python depends on report@
226*4882a593Smuzhiyunp << r2.p;
227*4882a593Smuzhiyunx << r2.x;
228*4882a593Smuzhiyun@@
229*4882a593Smuzhiyun
230*4882a593Smuzhiyunmsg="WARNING: dma_alloc_coherent used in %s already zeroes out memory, so memset is not needed" % (x)
231*4882a593Smuzhiyuncoccilib.report.print_report(p[0], msg)
232*4882a593Smuzhiyun
233*4882a593Smuzhiyun//-----------------------------------------------------------------
234*4882a593Smuzhiyun@r3 depends on org || report@
235*4882a593Smuzhiyuntype T, T2;
236*4882a593Smuzhiyunexpression x;
237*4882a593Smuzhiyunexpression E1,E2,E3;
238*4882a593Smuzhiyunstatement S;
239*4882a593Smuzhiyunposition p;
240*4882a593Smuzhiyun@@
241*4882a593Smuzhiyun
242*4882a593Smuzhiyun x = (T)kmalloc_node@p(E1,E2,E3);
243*4882a593Smuzhiyun if ((x==NULL) || ...) S
244*4882a593Smuzhiyun memset((T2)x,0,E1);
245*4882a593Smuzhiyun
246*4882a593Smuzhiyun@script:python depends on org@
247*4882a593Smuzhiyunp << r3.p;
248*4882a593Smuzhiyunx << r3.x;
249*4882a593Smuzhiyun@@
250*4882a593Smuzhiyun
251*4882a593Smuzhiyunmsg="%s" % (x)
252*4882a593Smuzhiyunmsg_safe=msg.replace("[","@(").replace("]",")")
253*4882a593Smuzhiyuncoccilib.org.print_todo(p[0], msg_safe)
254*4882a593Smuzhiyun
255*4882a593Smuzhiyun@script:python depends on report@
256*4882a593Smuzhiyunp << r3.p;
257*4882a593Smuzhiyunx << r3.x;
258*4882a593Smuzhiyun@@
259*4882a593Smuzhiyun
260*4882a593Smuzhiyunmsg="WARNING: kzalloc_node should be used for %s, instead of kmalloc_node/memset" % (x)
261*4882a593Smuzhiyuncoccilib.report.print_report(p[0], msg)
262*4882a593Smuzhiyun
263*4882a593Smuzhiyun//-----------------------------------------------------------------
264*4882a593Smuzhiyun@r4 depends on org || report@
265*4882a593Smuzhiyuntype T, T2;
266*4882a593Smuzhiyunexpression x;
267*4882a593Smuzhiyunexpression E1,E2,E3;
268*4882a593Smuzhiyunstatement S;
269*4882a593Smuzhiyunposition p;
270*4882a593Smuzhiyun@@
271*4882a593Smuzhiyun
272*4882a593Smuzhiyun x = (T)kmem_cache_alloc@p(E2,E3);
273*4882a593Smuzhiyun if ((x==NULL) || ...) S
274*4882a593Smuzhiyun memset((T2)x,0,E1);
275*4882a593Smuzhiyun
276*4882a593Smuzhiyun@script:python depends on org@
277*4882a593Smuzhiyunp << r4.p;
278*4882a593Smuzhiyunx << r4.x;
279*4882a593Smuzhiyun@@
280*4882a593Smuzhiyun
281*4882a593Smuzhiyunmsg="%s" % (x)
282*4882a593Smuzhiyunmsg_safe=msg.replace("[","@(").replace("]",")")
283*4882a593Smuzhiyuncoccilib.org.print_todo(p[0], msg_safe)
284*4882a593Smuzhiyun
285*4882a593Smuzhiyun@script:python depends on report@
286*4882a593Smuzhiyunp << r4.p;
287*4882a593Smuzhiyunx << r4.x;
288*4882a593Smuzhiyun@@
289*4882a593Smuzhiyun
290*4882a593Smuzhiyunmsg="WARNING: kmem_cache_zalloc should be used for %s, instead of kmem_cache_alloc/memset" % (x)
291*4882a593Smuzhiyuncoccilib.report.print_report(p[0], msg)
292*4882a593Smuzhiyun
293*4882a593Smuzhiyun//-----------------------------------------------------------------
294*4882a593Smuzhiyun@r5 depends on org || report@
295*4882a593Smuzhiyuntype T, T2;
296*4882a593Smuzhiyunexpression x;
297*4882a593Smuzhiyunexpression E1,E2;
298*4882a593Smuzhiyunstatement S;
299*4882a593Smuzhiyunposition p;
300*4882a593Smuzhiyun@@
301*4882a593Smuzhiyun
302*4882a593Smuzhiyun x = (T)kmem_alloc@p(E1,E2);
303*4882a593Smuzhiyun if ((x==NULL) || ...) S
304*4882a593Smuzhiyun memset((T2)x,0,E1);
305*4882a593Smuzhiyun
306*4882a593Smuzhiyun@script:python depends on org@
307*4882a593Smuzhiyunp << r5.p;
308*4882a593Smuzhiyunx << r5.x;
309*4882a593Smuzhiyun@@
310*4882a593Smuzhiyun
311*4882a593Smuzhiyunmsg="%s" % (x)
312*4882a593Smuzhiyunmsg_safe=msg.replace("[","@(").replace("]",")")
313*4882a593Smuzhiyuncoccilib.org.print_todo(p[0], msg_safe)
314*4882a593Smuzhiyun
315*4882a593Smuzhiyun@script:python depends on report@
316*4882a593Smuzhiyunp << r5.p;
317*4882a593Smuzhiyunx << r5.x;
318*4882a593Smuzhiyun@@
319*4882a593Smuzhiyun
320*4882a593Smuzhiyunmsg="WARNING: kmem_zalloc should be used for %s, instead of kmem_alloc/memset" % (x)
321*4882a593Smuzhiyuncoccilib.report.print_report(p[0], msg)
322*4882a593Smuzhiyun
323*4882a593Smuzhiyun//-----------------------------------------------------------------
324*4882a593Smuzhiyun@r6 depends on org || report@
325*4882a593Smuzhiyuntype T, T2;
326*4882a593Smuzhiyunexpression x;
327*4882a593Smuzhiyunexpression E1,E2,E3;
328*4882a593Smuzhiyunstatement S;
329*4882a593Smuzhiyunposition p;
330*4882a593Smuzhiyun@@
331*4882a593Smuzhiyun
332*4882a593Smuzhiyun x = (T)devm_kmalloc@p(E2,E1,E3);
333*4882a593Smuzhiyun if ((x==NULL) || ...) S
334*4882a593Smuzhiyun memset((T2)x,0,E1);
335*4882a593Smuzhiyun
336*4882a593Smuzhiyun@script:python depends on org@
337*4882a593Smuzhiyunp << r6.p;
338*4882a593Smuzhiyunx << r6.x;
339*4882a593Smuzhiyun@@
340*4882a593Smuzhiyun
341*4882a593Smuzhiyunmsg="%s" % (x)
342*4882a593Smuzhiyunmsg_safe=msg.replace("[","@(").replace("]",")")
343*4882a593Smuzhiyuncoccilib.org.print_todo(p[0], msg_safe)
344*4882a593Smuzhiyun
345*4882a593Smuzhiyun@script:python depends on report@
346*4882a593Smuzhiyunp << r6.p;
347*4882a593Smuzhiyunx << r6.x;
348*4882a593Smuzhiyun@@
349*4882a593Smuzhiyun
350*4882a593Smuzhiyunmsg="WARNING: devm_kzalloc should be used for %s, instead of devm_kmalloc/memset" % (x)
351*4882a593Smuzhiyuncoccilib.report.print_report(p[0], msg)
352*4882a593Smuzhiyun
353*4882a593Smuzhiyun//-----------------------------------------------------------------
354*4882a593Smuzhiyun@r7 depends on org || report@
355*4882a593Smuzhiyuntype T, T2;
356*4882a593Smuzhiyunexpression x;
357*4882a593Smuzhiyunexpression E1,E2;
358*4882a593Smuzhiyunstatement S;
359*4882a593Smuzhiyunposition p;
360*4882a593Smuzhiyun@@
361*4882a593Smuzhiyun
362*4882a593Smuzhiyun x = (T)kvmalloc@p(E1,E2);
363*4882a593Smuzhiyun if ((x==NULL) || ...) S
364*4882a593Smuzhiyun memset((T2)x,0,E1);
365*4882a593Smuzhiyun
366*4882a593Smuzhiyun@script:python depends on org@
367*4882a593Smuzhiyunp << r7.p;
368*4882a593Smuzhiyunx << r7.x;
369*4882a593Smuzhiyun@@
370*4882a593Smuzhiyun
371*4882a593Smuzhiyunmsg="%s" % (x)
372*4882a593Smuzhiyunmsg_safe=msg.replace("[","@(").replace("]",")")
373*4882a593Smuzhiyuncoccilib.org.print_todo(p[0], msg_safe)
374*4882a593Smuzhiyun
375*4882a593Smuzhiyun@script:python depends on report@
376*4882a593Smuzhiyunp << r7.p;
377*4882a593Smuzhiyunx << r7.x;
378*4882a593Smuzhiyun@@
379*4882a593Smuzhiyun
380*4882a593Smuzhiyunmsg="WARNING: kvzalloc should be used for %s, instead of kvmalloc/memset" % (x)
381*4882a593Smuzhiyuncoccilib.report.print_report(p[0], msg)
382*4882a593Smuzhiyun
383*4882a593Smuzhiyun//-----------------------------------------------------------------
384*4882a593Smuzhiyun@r9 depends on org || report@
385*4882a593Smuzhiyuntype T, T2;
386*4882a593Smuzhiyunexpression x;
387*4882a593Smuzhiyunexpression E1,E2,E3;
388*4882a593Smuzhiyunstatement S;
389*4882a593Smuzhiyunposition p;
390*4882a593Smuzhiyun@@
391*4882a593Smuzhiyun
392*4882a593Smuzhiyun x = (T)kvmalloc_node@p(E1,E2,E3);
393*4882a593Smuzhiyun if ((x==NULL) || ...) S
394*4882a593Smuzhiyun memset((T2)x,0,E1);
395*4882a593Smuzhiyun
396*4882a593Smuzhiyun@script:python depends on org@
397*4882a593Smuzhiyunp << r9.p;
398*4882a593Smuzhiyunx << r9.x;
399*4882a593Smuzhiyun@@
400*4882a593Smuzhiyun
401*4882a593Smuzhiyunmsg="%s" % (x)
402*4882a593Smuzhiyunmsg_safe=msg.replace("[","@(").replace("]",")")
403*4882a593Smuzhiyuncoccilib.org.print_todo(p[0], msg_safe)
404*4882a593Smuzhiyun
405*4882a593Smuzhiyun@script:python depends on report@
406*4882a593Smuzhiyunp << r9.p;
407*4882a593Smuzhiyunx << r9.x;
408*4882a593Smuzhiyun@@
409*4882a593Smuzhiyun
410*4882a593Smuzhiyunmsg="WARNING: kvzalloc_node should be used for %s, instead of kvmalloc_node/memset" % (x)
411*4882a593Smuzhiyuncoccilib.report.print_report(p[0], msg)
412