18c2ecf20Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-only
28c2ecf20Sopenharmony_ci///
38c2ecf20Sopenharmony_ci/// Use zeroing allocator rather than allocator followed by memset with 0
48c2ecf20Sopenharmony_ci///
58c2ecf20Sopenharmony_ci/// This considers some simple cases that are common and easy to validate
68c2ecf20Sopenharmony_ci/// Note in particular that there are no ...s in the rule, so all of the
78c2ecf20Sopenharmony_ci/// matched code has to be contiguous
88c2ecf20Sopenharmony_ci///
98c2ecf20Sopenharmony_ci// Confidence: High
108c2ecf20Sopenharmony_ci// Copyright: (C) 2009-2010 Julia Lawall, Nicolas Palix, DIKU.
118c2ecf20Sopenharmony_ci// Copyright: (C) 2009-2010 Gilles Muller, INRIA/LiP6.
128c2ecf20Sopenharmony_ci// Copyright: (C) 2017 Himanshu Jha
138c2ecf20Sopenharmony_ci// URL: http://coccinelle.lip6.fr/rules/kzalloc.html
148c2ecf20Sopenharmony_ci// Options: --no-includes --include-headers
158c2ecf20Sopenharmony_ci//
168c2ecf20Sopenharmony_ci// Keywords: kmalloc, kzalloc
178c2ecf20Sopenharmony_ci// Version min: < 2.6.12 kmalloc
188c2ecf20Sopenharmony_ci// Version min:   2.6.14 kzalloc
198c2ecf20Sopenharmony_ci//
208c2ecf20Sopenharmony_ci
218c2ecf20Sopenharmony_civirtual context
228c2ecf20Sopenharmony_civirtual patch
238c2ecf20Sopenharmony_civirtual org
248c2ecf20Sopenharmony_civirtual report
258c2ecf20Sopenharmony_ci
268c2ecf20Sopenharmony_ci//----------------------------------------------------------
278c2ecf20Sopenharmony_ci//  For context mode
288c2ecf20Sopenharmony_ci//----------------------------------------------------------
298c2ecf20Sopenharmony_ci
308c2ecf20Sopenharmony_ci@depends on context@
318c2ecf20Sopenharmony_citype T, T2;
328c2ecf20Sopenharmony_ciexpression x;
338c2ecf20Sopenharmony_ciexpression E1;
348c2ecf20Sopenharmony_cistatement S;
358c2ecf20Sopenharmony_ci@@
368c2ecf20Sopenharmony_ci
378c2ecf20Sopenharmony_ci* x = (T)\(kmalloc(E1, ...)\|vmalloc(E1)\|dma_alloc_coherent(...,E1,...)\|
388c2ecf20Sopenharmony_ci  kmalloc_node(E1, ...)\|kmem_cache_alloc(...)\|kmem_alloc(E1, ...)\|
398c2ecf20Sopenharmony_ci  devm_kmalloc(...,E1,...)\|kvmalloc(E1, ...)\|kvmalloc_node(E1,...)\);
408c2ecf20Sopenharmony_ci  if ((x==NULL) || ...) S
418c2ecf20Sopenharmony_ci* memset((T2)x,0,E1);
428c2ecf20Sopenharmony_ci
438c2ecf20Sopenharmony_ci//----------------------------------------------------------
448c2ecf20Sopenharmony_ci//  For patch mode
458c2ecf20Sopenharmony_ci//----------------------------------------------------------
468c2ecf20Sopenharmony_ci
478c2ecf20Sopenharmony_ci@depends on patch@
488c2ecf20Sopenharmony_citype T, T2;
498c2ecf20Sopenharmony_ciexpression x;
508c2ecf20Sopenharmony_ciexpression E1,E2,E3,E4;
518c2ecf20Sopenharmony_cistatement S;
528c2ecf20Sopenharmony_ci@@
538c2ecf20Sopenharmony_ci
548c2ecf20Sopenharmony_ci(
558c2ecf20Sopenharmony_ci- x = kmalloc(E1,E2);
568c2ecf20Sopenharmony_ci+ x = kzalloc(E1,E2);
578c2ecf20Sopenharmony_ci|
588c2ecf20Sopenharmony_ci- x = (T *)kmalloc(E1,E2);
598c2ecf20Sopenharmony_ci+ x = kzalloc(E1,E2);
608c2ecf20Sopenharmony_ci|
618c2ecf20Sopenharmony_ci- x = (T)kmalloc(E1,E2);
628c2ecf20Sopenharmony_ci+ x = (T)kzalloc(E1,E2);
638c2ecf20Sopenharmony_ci|
648c2ecf20Sopenharmony_ci- x = vmalloc(E1);
658c2ecf20Sopenharmony_ci+ x = vzalloc(E1);
668c2ecf20Sopenharmony_ci|
678c2ecf20Sopenharmony_ci- x = (T *)vmalloc(E1);
688c2ecf20Sopenharmony_ci+ x = vzalloc(E1);
698c2ecf20Sopenharmony_ci|
708c2ecf20Sopenharmony_ci- x = (T)vmalloc(E1);
718c2ecf20Sopenharmony_ci+ x = (T)vzalloc(E1);
728c2ecf20Sopenharmony_ci|
738c2ecf20Sopenharmony_ci- x = kmalloc_node(E1,E2,E3);
748c2ecf20Sopenharmony_ci+ x = kzalloc_node(E1,E2,E3);
758c2ecf20Sopenharmony_ci|
768c2ecf20Sopenharmony_ci- x = (T *)kmalloc_node(E1,E2,E3);
778c2ecf20Sopenharmony_ci+ x = kzalloc_node(E1,E2,E3);
788c2ecf20Sopenharmony_ci|
798c2ecf20Sopenharmony_ci- x = (T)kmalloc_node(E1,E2,E3);
808c2ecf20Sopenharmony_ci+ x = (T)kzalloc_node(E1,E2,E3);
818c2ecf20Sopenharmony_ci|
828c2ecf20Sopenharmony_ci- x = kmem_cache_alloc(E3,E4);
838c2ecf20Sopenharmony_ci+ x = kmem_cache_zalloc(E3,E4);
848c2ecf20Sopenharmony_ci|
858c2ecf20Sopenharmony_ci- x = (T *)kmem_cache_alloc(E3,E4);
868c2ecf20Sopenharmony_ci+ x = kmem_cache_zalloc(E3,E4);
878c2ecf20Sopenharmony_ci|
888c2ecf20Sopenharmony_ci- x = (T)kmem_cache_alloc(E3,E4);
898c2ecf20Sopenharmony_ci+ x = (T)kmem_cache_zalloc(E3,E4);
908c2ecf20Sopenharmony_ci|
918c2ecf20Sopenharmony_ci- x = kmem_alloc(E1,E2);
928c2ecf20Sopenharmony_ci+ x = kmem_zalloc(E1,E2);
938c2ecf20Sopenharmony_ci|
948c2ecf20Sopenharmony_ci- x = (T *)kmem_alloc(E1,E2);
958c2ecf20Sopenharmony_ci+ x = kmem_zalloc(E1,E2);
968c2ecf20Sopenharmony_ci|
978c2ecf20Sopenharmony_ci- x = (T)kmem_alloc(E1,E2);
988c2ecf20Sopenharmony_ci+ x = (T)kmem_zalloc(E1,E2);
998c2ecf20Sopenharmony_ci|
1008c2ecf20Sopenharmony_ci- x = devm_kmalloc(E2,E1,E3);
1018c2ecf20Sopenharmony_ci+ x = devm_kzalloc(E2,E1,E3);
1028c2ecf20Sopenharmony_ci|
1038c2ecf20Sopenharmony_ci- x = (T *)devm_kmalloc(E2,E1,E3);
1048c2ecf20Sopenharmony_ci+ x = devm_kzalloc(E2,E1,E3);
1058c2ecf20Sopenharmony_ci|
1068c2ecf20Sopenharmony_ci- x = (T)devm_kmalloc(E2,E1,E3);
1078c2ecf20Sopenharmony_ci+ x = (T)devm_kzalloc(E2,E1,E3);
1088c2ecf20Sopenharmony_ci|
1098c2ecf20Sopenharmony_ci- x = kvmalloc(E1,E2);
1108c2ecf20Sopenharmony_ci+ x = kvzalloc(E1,E2);
1118c2ecf20Sopenharmony_ci|
1128c2ecf20Sopenharmony_ci- x = (T *)kvmalloc(E1,E2);
1138c2ecf20Sopenharmony_ci+ x = kvzalloc(E1,E2);
1148c2ecf20Sopenharmony_ci|
1158c2ecf20Sopenharmony_ci- x = (T)kvmalloc(E1,E2);
1168c2ecf20Sopenharmony_ci+ x = (T)kvzalloc(E1,E2);
1178c2ecf20Sopenharmony_ci|
1188c2ecf20Sopenharmony_ci- x = kvmalloc_node(E1,E2,E3);
1198c2ecf20Sopenharmony_ci+ x = kvzalloc_node(E1,E2,E3);
1208c2ecf20Sopenharmony_ci|
1218c2ecf20Sopenharmony_ci- x = (T *)kvmalloc_node(E1,E2,E3);
1228c2ecf20Sopenharmony_ci+ x = kvzalloc_node(E1,E2,E3);
1238c2ecf20Sopenharmony_ci|
1248c2ecf20Sopenharmony_ci- x = (T)kvmalloc_node(E1,E2,E3);
1258c2ecf20Sopenharmony_ci+ x = (T)kvzalloc_node(E1,E2,E3);
1268c2ecf20Sopenharmony_ci)
1278c2ecf20Sopenharmony_ci  if ((x==NULL) || ...) S
1288c2ecf20Sopenharmony_ci- memset((T2)x,0,E1);
1298c2ecf20Sopenharmony_ci
1308c2ecf20Sopenharmony_ci@depends on patch@
1318c2ecf20Sopenharmony_citype T, T2;
1328c2ecf20Sopenharmony_ciexpression x;
1338c2ecf20Sopenharmony_ciexpression E1,E2,E3,E4;
1348c2ecf20Sopenharmony_cistatement S;
1358c2ecf20Sopenharmony_ci@@
1368c2ecf20Sopenharmony_ci  x = (T)dma_alloc_coherent(E1, E2, E3, E4);
1378c2ecf20Sopenharmony_ci  if ((x==NULL) || ...) S
1388c2ecf20Sopenharmony_ci- memset((T2)x, 0, E2);
1398c2ecf20Sopenharmony_ci
1408c2ecf20Sopenharmony_ci//----------------------------------------------------------
1418c2ecf20Sopenharmony_ci//  For org mode
1428c2ecf20Sopenharmony_ci//----------------------------------------------------------
1438c2ecf20Sopenharmony_ci
1448c2ecf20Sopenharmony_ci@r depends on org || report@
1458c2ecf20Sopenharmony_citype T, T2;
1468c2ecf20Sopenharmony_ciexpression x;
1478c2ecf20Sopenharmony_ciexpression E1,E2;
1488c2ecf20Sopenharmony_cistatement S;
1498c2ecf20Sopenharmony_ciposition p;
1508c2ecf20Sopenharmony_ci@@
1518c2ecf20Sopenharmony_ci
1528c2ecf20Sopenharmony_ci x = (T)kmalloc@p(E1,E2);
1538c2ecf20Sopenharmony_ci if ((x==NULL) || ...) S
1548c2ecf20Sopenharmony_ci memset((T2)x,0,E1);
1558c2ecf20Sopenharmony_ci
1568c2ecf20Sopenharmony_ci@script:python depends on org@
1578c2ecf20Sopenharmony_cip << r.p;
1588c2ecf20Sopenharmony_cix << r.x;
1598c2ecf20Sopenharmony_ci@@
1608c2ecf20Sopenharmony_ci
1618c2ecf20Sopenharmony_cimsg="%s" % (x)
1628c2ecf20Sopenharmony_cimsg_safe=msg.replace("[","@(").replace("]",")")
1638c2ecf20Sopenharmony_cicoccilib.org.print_todo(p[0], msg_safe)
1648c2ecf20Sopenharmony_ci
1658c2ecf20Sopenharmony_ci@script:python depends on report@
1668c2ecf20Sopenharmony_cip << r.p;
1678c2ecf20Sopenharmony_cix << r.x;
1688c2ecf20Sopenharmony_ci@@
1698c2ecf20Sopenharmony_ci
1708c2ecf20Sopenharmony_cimsg="WARNING: kzalloc should be used for %s, instead of kmalloc/memset" % (x)
1718c2ecf20Sopenharmony_cicoccilib.report.print_report(p[0], msg)
1728c2ecf20Sopenharmony_ci
1738c2ecf20Sopenharmony_ci//-----------------------------------------------------------------
1748c2ecf20Sopenharmony_ci@r1 depends on org || report@
1758c2ecf20Sopenharmony_citype T, T2;
1768c2ecf20Sopenharmony_ciexpression x;
1778c2ecf20Sopenharmony_ciexpression E1;
1788c2ecf20Sopenharmony_cistatement S;
1798c2ecf20Sopenharmony_ciposition p;
1808c2ecf20Sopenharmony_ci@@
1818c2ecf20Sopenharmony_ci
1828c2ecf20Sopenharmony_ci x = (T)vmalloc@p(E1);
1838c2ecf20Sopenharmony_ci if ((x==NULL) || ...) S
1848c2ecf20Sopenharmony_ci memset((T2)x,0,E1);
1858c2ecf20Sopenharmony_ci
1868c2ecf20Sopenharmony_ci@script:python depends on org@
1878c2ecf20Sopenharmony_cip << r1.p;
1888c2ecf20Sopenharmony_cix << r1.x;
1898c2ecf20Sopenharmony_ci@@
1908c2ecf20Sopenharmony_ci
1918c2ecf20Sopenharmony_cimsg="%s" % (x)
1928c2ecf20Sopenharmony_cimsg_safe=msg.replace("[","@(").replace("]",")")
1938c2ecf20Sopenharmony_cicoccilib.org.print_todo(p[0], msg_safe)
1948c2ecf20Sopenharmony_ci
1958c2ecf20Sopenharmony_ci@script:python depends on report@
1968c2ecf20Sopenharmony_cip << r1.p;
1978c2ecf20Sopenharmony_cix << r1.x;
1988c2ecf20Sopenharmony_ci@@
1998c2ecf20Sopenharmony_ci
2008c2ecf20Sopenharmony_cimsg="WARNING: vzalloc should be used for %s, instead of vmalloc/memset" % (x)
2018c2ecf20Sopenharmony_cicoccilib.report.print_report(p[0], msg)
2028c2ecf20Sopenharmony_ci
2038c2ecf20Sopenharmony_ci//-----------------------------------------------------------------
2048c2ecf20Sopenharmony_ci@r2 depends on org || report@
2058c2ecf20Sopenharmony_citype T, T2;
2068c2ecf20Sopenharmony_ciexpression x;
2078c2ecf20Sopenharmony_ciexpression E1,E2,E3,E4;
2088c2ecf20Sopenharmony_cistatement S;
2098c2ecf20Sopenharmony_ciposition p;
2108c2ecf20Sopenharmony_ci@@
2118c2ecf20Sopenharmony_ci
2128c2ecf20Sopenharmony_ci x = (T)dma_alloc_coherent@p(E1,E2,E3,E4);
2138c2ecf20Sopenharmony_ci if ((x==NULL) || ...) S
2148c2ecf20Sopenharmony_ci memset((T2)x,0,E2);
2158c2ecf20Sopenharmony_ci
2168c2ecf20Sopenharmony_ci@script:python depends on org@
2178c2ecf20Sopenharmony_cip << r2.p;
2188c2ecf20Sopenharmony_cix << r2.x;
2198c2ecf20Sopenharmony_ci@@
2208c2ecf20Sopenharmony_ci
2218c2ecf20Sopenharmony_cimsg="%s" % (x)
2228c2ecf20Sopenharmony_cimsg_safe=msg.replace("[","@(").replace("]",")")
2238c2ecf20Sopenharmony_cicoccilib.org.print_todo(p[0], msg_safe)
2248c2ecf20Sopenharmony_ci
2258c2ecf20Sopenharmony_ci@script:python depends on report@
2268c2ecf20Sopenharmony_cip << r2.p;
2278c2ecf20Sopenharmony_cix << r2.x;
2288c2ecf20Sopenharmony_ci@@
2298c2ecf20Sopenharmony_ci
2308c2ecf20Sopenharmony_cimsg="WARNING: dma_alloc_coherent used in %s already zeroes out memory, so memset is not needed" % (x)
2318c2ecf20Sopenharmony_cicoccilib.report.print_report(p[0], msg)
2328c2ecf20Sopenharmony_ci
2338c2ecf20Sopenharmony_ci//-----------------------------------------------------------------
2348c2ecf20Sopenharmony_ci@r3 depends on org || report@
2358c2ecf20Sopenharmony_citype T, T2;
2368c2ecf20Sopenharmony_ciexpression x;
2378c2ecf20Sopenharmony_ciexpression E1,E2,E3;
2388c2ecf20Sopenharmony_cistatement S;
2398c2ecf20Sopenharmony_ciposition p;
2408c2ecf20Sopenharmony_ci@@
2418c2ecf20Sopenharmony_ci
2428c2ecf20Sopenharmony_ci x = (T)kmalloc_node@p(E1,E2,E3);
2438c2ecf20Sopenharmony_ci if ((x==NULL) || ...) S
2448c2ecf20Sopenharmony_ci memset((T2)x,0,E1);
2458c2ecf20Sopenharmony_ci
2468c2ecf20Sopenharmony_ci@script:python depends on org@
2478c2ecf20Sopenharmony_cip << r3.p;
2488c2ecf20Sopenharmony_cix << r3.x;
2498c2ecf20Sopenharmony_ci@@
2508c2ecf20Sopenharmony_ci
2518c2ecf20Sopenharmony_cimsg="%s" % (x)
2528c2ecf20Sopenharmony_cimsg_safe=msg.replace("[","@(").replace("]",")")
2538c2ecf20Sopenharmony_cicoccilib.org.print_todo(p[0], msg_safe)
2548c2ecf20Sopenharmony_ci
2558c2ecf20Sopenharmony_ci@script:python depends on report@
2568c2ecf20Sopenharmony_cip << r3.p;
2578c2ecf20Sopenharmony_cix << r3.x;
2588c2ecf20Sopenharmony_ci@@
2598c2ecf20Sopenharmony_ci
2608c2ecf20Sopenharmony_cimsg="WARNING: kzalloc_node should be used for %s, instead of kmalloc_node/memset" % (x)
2618c2ecf20Sopenharmony_cicoccilib.report.print_report(p[0], msg)
2628c2ecf20Sopenharmony_ci
2638c2ecf20Sopenharmony_ci//-----------------------------------------------------------------
2648c2ecf20Sopenharmony_ci@r4 depends on org || report@
2658c2ecf20Sopenharmony_citype T, T2;
2668c2ecf20Sopenharmony_ciexpression x;
2678c2ecf20Sopenharmony_ciexpression E1,E2,E3;
2688c2ecf20Sopenharmony_cistatement S;
2698c2ecf20Sopenharmony_ciposition p;
2708c2ecf20Sopenharmony_ci@@
2718c2ecf20Sopenharmony_ci
2728c2ecf20Sopenharmony_ci x = (T)kmem_cache_alloc@p(E2,E3);
2738c2ecf20Sopenharmony_ci if ((x==NULL) || ...) S
2748c2ecf20Sopenharmony_ci memset((T2)x,0,E1);
2758c2ecf20Sopenharmony_ci
2768c2ecf20Sopenharmony_ci@script:python depends on org@
2778c2ecf20Sopenharmony_cip << r4.p;
2788c2ecf20Sopenharmony_cix << r4.x;
2798c2ecf20Sopenharmony_ci@@
2808c2ecf20Sopenharmony_ci
2818c2ecf20Sopenharmony_cimsg="%s" % (x)
2828c2ecf20Sopenharmony_cimsg_safe=msg.replace("[","@(").replace("]",")")
2838c2ecf20Sopenharmony_cicoccilib.org.print_todo(p[0], msg_safe)
2848c2ecf20Sopenharmony_ci
2858c2ecf20Sopenharmony_ci@script:python depends on report@
2868c2ecf20Sopenharmony_cip << r4.p;
2878c2ecf20Sopenharmony_cix << r4.x;
2888c2ecf20Sopenharmony_ci@@
2898c2ecf20Sopenharmony_ci
2908c2ecf20Sopenharmony_cimsg="WARNING: kmem_cache_zalloc should be used for %s, instead of kmem_cache_alloc/memset" % (x)
2918c2ecf20Sopenharmony_cicoccilib.report.print_report(p[0], msg)
2928c2ecf20Sopenharmony_ci
2938c2ecf20Sopenharmony_ci//-----------------------------------------------------------------
2948c2ecf20Sopenharmony_ci@r5 depends on org || report@
2958c2ecf20Sopenharmony_citype T, T2;
2968c2ecf20Sopenharmony_ciexpression x;
2978c2ecf20Sopenharmony_ciexpression E1,E2;
2988c2ecf20Sopenharmony_cistatement S;
2998c2ecf20Sopenharmony_ciposition p;
3008c2ecf20Sopenharmony_ci@@
3018c2ecf20Sopenharmony_ci
3028c2ecf20Sopenharmony_ci x = (T)kmem_alloc@p(E1,E2);
3038c2ecf20Sopenharmony_ci if ((x==NULL) || ...) S
3048c2ecf20Sopenharmony_ci memset((T2)x,0,E1);
3058c2ecf20Sopenharmony_ci
3068c2ecf20Sopenharmony_ci@script:python depends on org@
3078c2ecf20Sopenharmony_cip << r5.p;
3088c2ecf20Sopenharmony_cix << r5.x;
3098c2ecf20Sopenharmony_ci@@
3108c2ecf20Sopenharmony_ci
3118c2ecf20Sopenharmony_cimsg="%s" % (x)
3128c2ecf20Sopenharmony_cimsg_safe=msg.replace("[","@(").replace("]",")")
3138c2ecf20Sopenharmony_cicoccilib.org.print_todo(p[0], msg_safe)
3148c2ecf20Sopenharmony_ci
3158c2ecf20Sopenharmony_ci@script:python depends on report@
3168c2ecf20Sopenharmony_cip << r5.p;
3178c2ecf20Sopenharmony_cix << r5.x;
3188c2ecf20Sopenharmony_ci@@
3198c2ecf20Sopenharmony_ci
3208c2ecf20Sopenharmony_cimsg="WARNING: kmem_zalloc should be used for %s, instead of kmem_alloc/memset" % (x)
3218c2ecf20Sopenharmony_cicoccilib.report.print_report(p[0], msg)
3228c2ecf20Sopenharmony_ci
3238c2ecf20Sopenharmony_ci//-----------------------------------------------------------------
3248c2ecf20Sopenharmony_ci@r6 depends on org || report@
3258c2ecf20Sopenharmony_citype T, T2;
3268c2ecf20Sopenharmony_ciexpression x;
3278c2ecf20Sopenharmony_ciexpression E1,E2,E3;
3288c2ecf20Sopenharmony_cistatement S;
3298c2ecf20Sopenharmony_ciposition p;
3308c2ecf20Sopenharmony_ci@@
3318c2ecf20Sopenharmony_ci
3328c2ecf20Sopenharmony_ci x = (T)devm_kmalloc@p(E2,E1,E3);
3338c2ecf20Sopenharmony_ci if ((x==NULL) || ...) S
3348c2ecf20Sopenharmony_ci memset((T2)x,0,E1);
3358c2ecf20Sopenharmony_ci
3368c2ecf20Sopenharmony_ci@script:python depends on org@
3378c2ecf20Sopenharmony_cip << r6.p;
3388c2ecf20Sopenharmony_cix << r6.x;
3398c2ecf20Sopenharmony_ci@@
3408c2ecf20Sopenharmony_ci
3418c2ecf20Sopenharmony_cimsg="%s" % (x)
3428c2ecf20Sopenharmony_cimsg_safe=msg.replace("[","@(").replace("]",")")
3438c2ecf20Sopenharmony_cicoccilib.org.print_todo(p[0], msg_safe)
3448c2ecf20Sopenharmony_ci
3458c2ecf20Sopenharmony_ci@script:python depends on report@
3468c2ecf20Sopenharmony_cip << r6.p;
3478c2ecf20Sopenharmony_cix << r6.x;
3488c2ecf20Sopenharmony_ci@@
3498c2ecf20Sopenharmony_ci
3508c2ecf20Sopenharmony_cimsg="WARNING: devm_kzalloc should be used for %s, instead of devm_kmalloc/memset" % (x)
3518c2ecf20Sopenharmony_cicoccilib.report.print_report(p[0], msg)
3528c2ecf20Sopenharmony_ci
3538c2ecf20Sopenharmony_ci//-----------------------------------------------------------------
3548c2ecf20Sopenharmony_ci@r7 depends on org || report@
3558c2ecf20Sopenharmony_citype T, T2;
3568c2ecf20Sopenharmony_ciexpression x;
3578c2ecf20Sopenharmony_ciexpression E1,E2;
3588c2ecf20Sopenharmony_cistatement S;
3598c2ecf20Sopenharmony_ciposition p;
3608c2ecf20Sopenharmony_ci@@
3618c2ecf20Sopenharmony_ci
3628c2ecf20Sopenharmony_ci x = (T)kvmalloc@p(E1,E2);
3638c2ecf20Sopenharmony_ci if ((x==NULL) || ...) S
3648c2ecf20Sopenharmony_ci memset((T2)x,0,E1);
3658c2ecf20Sopenharmony_ci
3668c2ecf20Sopenharmony_ci@script:python depends on org@
3678c2ecf20Sopenharmony_cip << r7.p;
3688c2ecf20Sopenharmony_cix << r7.x;
3698c2ecf20Sopenharmony_ci@@
3708c2ecf20Sopenharmony_ci
3718c2ecf20Sopenharmony_cimsg="%s" % (x)
3728c2ecf20Sopenharmony_cimsg_safe=msg.replace("[","@(").replace("]",")")
3738c2ecf20Sopenharmony_cicoccilib.org.print_todo(p[0], msg_safe)
3748c2ecf20Sopenharmony_ci
3758c2ecf20Sopenharmony_ci@script:python depends on report@
3768c2ecf20Sopenharmony_cip << r7.p;
3778c2ecf20Sopenharmony_cix << r7.x;
3788c2ecf20Sopenharmony_ci@@
3798c2ecf20Sopenharmony_ci
3808c2ecf20Sopenharmony_cimsg="WARNING: kvzalloc should be used for %s, instead of kvmalloc/memset" % (x)
3818c2ecf20Sopenharmony_cicoccilib.report.print_report(p[0], msg)
3828c2ecf20Sopenharmony_ci
3838c2ecf20Sopenharmony_ci//-----------------------------------------------------------------
3848c2ecf20Sopenharmony_ci@r9 depends on org || report@
3858c2ecf20Sopenharmony_citype T, T2;
3868c2ecf20Sopenharmony_ciexpression x;
3878c2ecf20Sopenharmony_ciexpression E1,E2,E3;
3888c2ecf20Sopenharmony_cistatement S;
3898c2ecf20Sopenharmony_ciposition p;
3908c2ecf20Sopenharmony_ci@@
3918c2ecf20Sopenharmony_ci
3928c2ecf20Sopenharmony_ci x = (T)kvmalloc_node@p(E1,E2,E3);
3938c2ecf20Sopenharmony_ci if ((x==NULL) || ...) S
3948c2ecf20Sopenharmony_ci memset((T2)x,0,E1);
3958c2ecf20Sopenharmony_ci
3968c2ecf20Sopenharmony_ci@script:python depends on org@
3978c2ecf20Sopenharmony_cip << r9.p;
3988c2ecf20Sopenharmony_cix << r9.x;
3998c2ecf20Sopenharmony_ci@@
4008c2ecf20Sopenharmony_ci
4018c2ecf20Sopenharmony_cimsg="%s" % (x)
4028c2ecf20Sopenharmony_cimsg_safe=msg.replace("[","@(").replace("]",")")
4038c2ecf20Sopenharmony_cicoccilib.org.print_todo(p[0], msg_safe)
4048c2ecf20Sopenharmony_ci
4058c2ecf20Sopenharmony_ci@script:python depends on report@
4068c2ecf20Sopenharmony_cip << r9.p;
4078c2ecf20Sopenharmony_cix << r9.x;
4088c2ecf20Sopenharmony_ci@@
4098c2ecf20Sopenharmony_ci
4108c2ecf20Sopenharmony_cimsg="WARNING: kvzalloc_node should be used for %s, instead of kvmalloc_node/memset" % (x)
4118c2ecf20Sopenharmony_cicoccilib.report.print_report(p[0], msg)
412