From mboxrd@z Thu Jan 1 00:00:00 1970 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755296AbeAMQ1e (ORCPT + 1 other); Sat, 13 Jan 2018 11:27:34 -0500 Received: from mail3-relais-sop.national.inria.fr ([192.134.164.104]:31166 "EHLO mail3-relais-sop.national.inria.fr" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755044AbeAMQ1d (ORCPT ); Sat, 13 Jan 2018 11:27:33 -0500 X-IronPort-AV: E=Sophos;i="5.46,354,1511823600"; d="scan'208";a="251104728" Date: Sat, 13 Jan 2018 17:27:22 +0100 (CET) From: Julia Lawall X-X-Sender: jll@hadrien To: Himanshu Jha cc: yamada.masahiro@socionext.com, Julia.Lawall@lip6.fr, Gilles Muller , nicolas.palix@imag.fr, michal.lkml@markovi.net, cocci@systeme.lip6.fr, linux-kernel@vger.kernel.org Subject: Re: [PATCH] Coccinelle: kzalloc-simple: Rename kzalloc-simple to zalloc-simple In-Reply-To: <1515859050-31764-1-git-send-email-himanshujha199640@gmail.com> Message-ID: References: <1515859050-31764-1-git-send-email-himanshujha199640@gmail.com> User-Agent: Alpine 2.20 (DEB 67 2015-01-07) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Return-Path: On Sat, 13 Jan 2018, Himanshu Jha wrote: > Rename kzalloc-simple to zalloc-simple since now the rule is not > specific to kzalloc function only, but also to many other zero memory > allocating functions specified in the rule. > > Signed-off-by: Himanshu Jha Acked-by: Julia Lawall > --- > scripts/coccinelle/api/alloc/kzalloc-simple.cocci | 448 ---------------------- > scripts/coccinelle/api/alloc/zalloc.cocci | 448 ++++++++++++++++++++++ > 2 files changed, 448 insertions(+), 448 deletions(-) > delete mode 100644 scripts/coccinelle/api/alloc/kzalloc-simple.cocci > create mode 100644 scripts/coccinelle/api/alloc/zalloc.cocci > > diff --git a/scripts/coccinelle/api/alloc/kzalloc-simple.cocci b/scripts/coccinelle/api/alloc/kzalloc-simple.cocci > deleted file mode 100644 > index 92b2091..0000000 > --- a/scripts/coccinelle/api/alloc/kzalloc-simple.cocci > +++ /dev/null > @@ -1,448 +0,0 @@ > -/// > -/// Use zeroing allocator rather than allocator followed by memset with 0 > -/// > -/// This considers some simple cases that are common and easy to validate > -/// Note in particular that there are no ...s in the rule, so all of the > -/// matched code has to be contiguous > -/// > -// Confidence: High > -// Copyright: (C) 2009-2010 Julia Lawall, Nicolas Palix, DIKU. GPLv2. > -// Copyright: (C) 2009-2010 Gilles Muller, INRIA/LiP6. GPLv2. > -// Copyright: (C) 2017 Himanshu Jha GPLv2. > -// URL: http://coccinelle.lip6.fr/rules/kzalloc.html > -// Options: --no-includes --include-headers > -// > -// Keywords: kmalloc, kzalloc > -// Version min: < 2.6.12 kmalloc > -// Version min: 2.6.14 kzalloc > -// > - > -virtual context > -virtual patch > -virtual org > -virtual report > - > -//---------------------------------------------------------- > -// For context mode > -//---------------------------------------------------------- > - > -@depends on context@ > -type T, T2; > -expression x; > -expression E1; > -statement S; > -@@ > - > -* x = (T)\(kmalloc(E1, ...)\|vmalloc(E1)\|dma_alloc_coherent(...,E1,...)\| > - kmalloc_node(E1, ...)\|kmem_cache_alloc(...)\|kmem_alloc(E1, ...)\| > - devm_kmalloc(...,E1,...)\|kvmalloc(E1, ...)\|pci_alloc_consistent(...,E1,...)\| > - kvmalloc_node(E1,...)\); > - if ((x==NULL) || ...) S > -* memset((T2)x,0,E1); > - > -//---------------------------------------------------------- > -// For patch mode > -//---------------------------------------------------------- > - > -@depends on patch@ > -type T, T2; > -expression x; > -expression E1,E2,E3,E4; > -statement S; > -@@ > - > -( > -- x = kmalloc(E1,E2); > -+ x = kzalloc(E1,E2); > -| > -- x = (T *)kmalloc(E1,E2); > -+ x = kzalloc(E1,E2); > -| > -- x = (T)kmalloc(E1,E2); > -+ x = (T)kzalloc(E1,E2); > -| > -- x = vmalloc(E1); > -+ x = vzalloc(E1); > -| > -- x = (T *)vmalloc(E1); > -+ x = vzalloc(E1); > -| > -- x = (T)vmalloc(E1); > -+ x = (T)vzalloc(E1); > -| > -- x = dma_alloc_coherent(E2,E1,E3,E4); > -+ x = dma_zalloc_coherent(E2,E1,E3,E4); > -| > -- x = (T *)dma_alloc_coherent(E2,E1,E3,E4); > -+ x = dma_zalloc_coherent(E2,E1,E3,E4); > -| > -- x = (T)dma_alloc_coherent(E2,E1,E3,E4); > -+ x = (T)dma_zalloc_coherent(E2,E1,E3,E4); > -| > -- x = kmalloc_node(E1,E2,E3); > -+ x = kzalloc_node(E1,E2,E3); > -| > -- x = (T *)kmalloc_node(E1,E2,E3); > -+ x = kzalloc_node(E1,E2,E3); > -| > -- x = (T)kmalloc_node(E1,E2,E3); > -+ x = (T)kzalloc_node(E1,E2,E3); > -| > -- x = kmem_cache_alloc(E3,E4); > -+ x = kmem_cache_zalloc(E3,E4); > -| > -- x = (T *)kmem_cache_alloc(E3,E4); > -+ x = kmem_cache_zalloc(E3,E4); > -| > -- x = (T)kmem_cache_alloc(E3,E4); > -+ x = (T)kmem_cache_zalloc(E3,E4); > -| > -- x = kmem_alloc(E1,E2); > -+ x = kmem_zalloc(E1,E2); > -| > -- x = (T *)kmem_alloc(E1,E2); > -+ x = kmem_zalloc(E1,E2); > -| > -- x = (T)kmem_alloc(E1,E2); > -+ x = (T)kmem_zalloc(E1,E2); > -| > -- x = devm_kmalloc(E2,E1,E3); > -+ x = devm_kzalloc(E2,E1,E3); > -| > -- x = (T *)devm_kmalloc(E2,E1,E3); > -+ x = devm_kzalloc(E2,E1,E3); > -| > -- x = (T)devm_kmalloc(E2,E1,E3); > -+ x = (T)devm_kzalloc(E2,E1,E3); > -| > -- x = kvmalloc(E1,E2); > -+ x = kvzalloc(E1,E2); > -| > -- x = (T *)kvmalloc(E1,E2); > -+ x = kvzalloc(E1,E2); > -| > -- x = (T)kvmalloc(E1,E2); > -+ x = (T)kvzalloc(E1,E2); > -| > -- x = pci_alloc_consistent(E2,E1,E3); > -+ x = pci_zalloc_consistent(E2,E1,E3); > -| > -- x = (T *)pci_alloc_consistent(E2,E1,E3); > -+ x = pci_zalloc_consistent(E2,E1,E3); > -| > -- x = (T)pci_alloc_consistent(E2,E1,E3); > -+ x = (T)pci_zalloc_consistent(E2,E1,E3); > -| > -- x = kvmalloc_node(E1,E2,E3); > -+ x = kvzalloc_node(E1,E2,E3); > -| > -- x = (T *)kvmalloc_node(E1,E2,E3); > -+ x = kvzalloc_node(E1,E2,E3); > -| > -- x = (T)kvmalloc_node(E1,E2,E3); > -+ x = (T)kvzalloc_node(E1,E2,E3); > -) > - if ((x==NULL) || ...) S > -- memset((T2)x,0,E1); > - > -//---------------------------------------------------------- > -// For org mode > -//---------------------------------------------------------- > - > -@r depends on org || report@ > -type T, T2; > -expression x; > -expression E1,E2; > -statement S; > -position p; > -@@ > - > - x = (T)kmalloc@p(E1,E2); > - if ((x==NULL) || ...) S > - memset((T2)x,0,E1); > - > -@script:python depends on org@ > -p << r.p; > -x << r.x; > -@@ > - > -msg="%s" % (x) > -msg_safe=msg.replace("[","@(").replace("]",")") > -coccilib.org.print_todo(p[0], msg_safe) > - > -@script:python depends on report@ > -p << r.p; > -x << r.x; > -@@ > - > -msg="WARNING: kzalloc should be used for %s, instead of kmalloc/memset" % (x) > -coccilib.report.print_report(p[0], msg) > - > -//----------------------------------------------------------------- > -@r1 depends on org || report@ > -type T, T2; > -expression x; > -expression E1; > -statement S; > -position p; > -@@ > - > - x = (T)vmalloc@p(E1); > - if ((x==NULL) || ...) S > - memset((T2)x,0,E1); > - > -@script:python depends on org@ > -p << r1.p; > -x << r1.x; > -@@ > - > -msg="%s" % (x) > -msg_safe=msg.replace("[","@(").replace("]",")") > -coccilib.org.print_todo(p[0], msg_safe) > - > -@script:python depends on report@ > -p << r1.p; > -x << r1.x; > -@@ > - > -msg="WARNING: vzalloc should be used for %s, instead of vmalloc/memset" % (x) > -coccilib.report.print_report(p[0], msg) > - > -//----------------------------------------------------------------- > -@r2 depends on org || report@ > -type T, T2; > -expression x; > -expression E1,E2,E3,E4; > -statement S; > -position p; > -@@ > - > - x = (T)dma_alloc_coherent@p(E2,E1,E3,E4); > - if ((x==NULL) || ...) S > - memset((T2)x,0,E1); > - > -@script:python depends on org@ > -p << r2.p; > -x << r2.x; > -@@ > - > -msg="%s" % (x) > -msg_safe=msg.replace("[","@(").replace("]",")") > -coccilib.org.print_todo(p[0], msg_safe) > - > -@script:python depends on report@ > -p << r2.p; > -x << r2.x; > -@@ > - > -msg="WARNING: dma_zalloc_coherent should be used for %s, instead of dma_alloc_coherent/memset" % (x) > -coccilib.report.print_report(p[0], msg) > - > -//----------------------------------------------------------------- > -@r3 depends on org || report@ > -type T, T2; > -expression x; > -expression E1,E2,E3; > -statement S; > -position p; > -@@ > - > - x = (T)kmalloc_node@p(E1,E2,E3); > - if ((x==NULL) || ...) S > - memset((T2)x,0,E1); > - > -@script:python depends on org@ > -p << r3.p; > -x << r3.x; > -@@ > - > -msg="%s" % (x) > -msg_safe=msg.replace("[","@(").replace("]",")") > -coccilib.org.print_todo(p[0], msg_safe) > - > -@script:python depends on report@ > -p << r3.p; > -x << r3.x; > -@@ > - > -msg="WARNING: kzalloc_node should be used for %s, instead of kmalloc_node/memset" % (x) > -coccilib.report.print_report(p[0], msg) > - > -//----------------------------------------------------------------- > -@r4 depends on org || report@ > -type T, T2; > -expression x; > -expression E1,E2,E3; > -statement S; > -position p; > -@@ > - > - x = (T)kmem_cache_alloc@p(E2,E3); > - if ((x==NULL) || ...) S > - memset((T2)x,0,E1); > - > -@script:python depends on org@ > -p << r4.p; > -x << r4.x; > -@@ > - > -msg="%s" % (x) > -msg_safe=msg.replace("[","@(").replace("]",")") > -coccilib.org.print_todo(p[0], msg_safe) > - > -@script:python depends on report@ > -p << r4.p; > -x << r4.x; > -@@ > - > -msg="WARNING: kmem_cache_zalloc should be used for %s, instead of kmem_cache_alloc/memset" % (x) > -coccilib.report.print_report(p[0], msg) > - > -//----------------------------------------------------------------- > -@r5 depends on org || report@ > -type T, T2; > -expression x; > -expression E1,E2; > -statement S; > -position p; > -@@ > - > - x = (T)kmem_alloc@p(E1,E2); > - if ((x==NULL) || ...) S > - memset((T2)x,0,E1); > - > -@script:python depends on org@ > -p << r5.p; > -x << r5.x; > -@@ > - > -msg="%s" % (x) > -msg_safe=msg.replace("[","@(").replace("]",")") > -coccilib.org.print_todo(p[0], msg_safe) > - > -@script:python depends on report@ > -p << r5.p; > -x << r5.x; > -@@ > - > -msg="WARNING: kmem_zalloc should be used for %s, instead of kmem_alloc/memset" % (x) > -coccilib.report.print_report(p[0], msg) > - > -//----------------------------------------------------------------- > -@r6 depends on org || report@ > -type T, T2; > -expression x; > -expression E1,E2,E3; > -statement S; > -position p; > -@@ > - > - x = (T)devm_kmalloc@p(E2,E1,E3); > - if ((x==NULL) || ...) S > - memset((T2)x,0,E1); > - > -@script:python depends on org@ > -p << r6.p; > -x << r6.x; > -@@ > - > -msg="%s" % (x) > -msg_safe=msg.replace("[","@(").replace("]",")") > -coccilib.org.print_todo(p[0], msg_safe) > - > -@script:python depends on report@ > -p << r6.p; > -x << r6.x; > -@@ > - > -msg="WARNING: devm_kzalloc should be used for %s, instead of devm_kmalloc/memset" % (x) > -coccilib.report.print_report(p[0], msg) > - > -//----------------------------------------------------------------- > -@r7 depends on org || report@ > -type T, T2; > -expression x; > -expression E1,E2; > -statement S; > -position p; > -@@ > - > - x = (T)kvmalloc@p(E1,E2); > - if ((x==NULL) || ...) S > - memset((T2)x,0,E1); > - > -@script:python depends on org@ > -p << r7.p; > -x << r7.x; > -@@ > - > -msg="%s" % (x) > -msg_safe=msg.replace("[","@(").replace("]",")") > -coccilib.org.print_todo(p[0], msg_safe) > - > -@script:python depends on report@ > -p << r7.p; > -x << r7.x; > -@@ > - > -msg="WARNING: kvzalloc should be used for %s, instead of kvmalloc/memset" % (x) > -coccilib.report.print_report(p[0], msg) > - > -//----------------------------------------------------------------- > -@r8 depends on org || report@ > -type T, T2; > -expression x; > -expression E1,E2,E3; > -statement S; > -position p; > -@@ > - > - x = (T)pci_alloc_consistent@p(E2,E1,E3); > - if ((x==NULL) || ...) S > - memset((T2)x,0,E1); > - > -@script:python depends on org@ > -p << r8.p; > -x << r8.x; > -@@ > - > -msg="%s" % (x) > -msg_safe=msg.replace("[","@(").replace("]",")") > -coccilib.org.print_todo(p[0], msg_safe) > - > -@script:python depends on report@ > -p << r8.p; > -x << r8.x; > -@@ > - > -msg="WARNING: pci_zalloc_consistent should be used for %s, instead of pci_alloc_consistent/memset" % (x) > -coccilib.report.print_report(p[0], msg) > -//----------------------------------------------------------------- > -@r9 depends on org || report@ > -type T, T2; > -expression x; > -expression E1,E2,E3; > -statement S; > -position p; > -@@ > - > - x = (T)kvmalloc_node@p(E1,E2,E3); > - if ((x==NULL) || ...) S > - memset((T2)x,0,E1); > - > -@script:python depends on org@ > -p << r9.p; > -x << r9.x; > -@@ > - > -msg="%s" % (x) > -msg_safe=msg.replace("[","@(").replace("]",")") > -coccilib.org.print_todo(p[0], msg_safe) > - > -@script:python depends on report@ > -p << r9.p; > -x << r9.x; > -@@ > - > -msg="WARNING: kvzalloc_node should be used for %s, instead of kvmalloc_node/memset" % (x) > -coccilib.report.print_report(p[0], msg) > diff --git a/scripts/coccinelle/api/alloc/zalloc.cocci b/scripts/coccinelle/api/alloc/zalloc.cocci > new file mode 100644 > index 0000000..92b2091 > --- /dev/null > +++ b/scripts/coccinelle/api/alloc/zalloc.cocci > @@ -0,0 +1,448 @@ > +/// > +/// Use zeroing allocator rather than allocator followed by memset with 0 > +/// > +/// This considers some simple cases that are common and easy to validate > +/// Note in particular that there are no ...s in the rule, so all of the > +/// matched code has to be contiguous > +/// > +// Confidence: High > +// Copyright: (C) 2009-2010 Julia Lawall, Nicolas Palix, DIKU. GPLv2. > +// Copyright: (C) 2009-2010 Gilles Muller, INRIA/LiP6. GPLv2. > +// Copyright: (C) 2017 Himanshu Jha GPLv2. > +// URL: http://coccinelle.lip6.fr/rules/kzalloc.html > +// Options: --no-includes --include-headers > +// > +// Keywords: kmalloc, kzalloc > +// Version min: < 2.6.12 kmalloc > +// Version min: 2.6.14 kzalloc > +// > + > +virtual context > +virtual patch > +virtual org > +virtual report > + > +//---------------------------------------------------------- > +// For context mode > +//---------------------------------------------------------- > + > +@depends on context@ > +type T, T2; > +expression x; > +expression E1; > +statement S; > +@@ > + > +* x = (T)\(kmalloc(E1, ...)\|vmalloc(E1)\|dma_alloc_coherent(...,E1,...)\| > + kmalloc_node(E1, ...)\|kmem_cache_alloc(...)\|kmem_alloc(E1, ...)\| > + devm_kmalloc(...,E1,...)\|kvmalloc(E1, ...)\|pci_alloc_consistent(...,E1,...)\| > + kvmalloc_node(E1,...)\); > + if ((x==NULL) || ...) S > +* memset((T2)x,0,E1); > + > +//---------------------------------------------------------- > +// For patch mode > +//---------------------------------------------------------- > + > +@depends on patch@ > +type T, T2; > +expression x; > +expression E1,E2,E3,E4; > +statement S; > +@@ > + > +( > +- x = kmalloc(E1,E2); > ++ x = kzalloc(E1,E2); > +| > +- x = (T *)kmalloc(E1,E2); > ++ x = kzalloc(E1,E2); > +| > +- x = (T)kmalloc(E1,E2); > ++ x = (T)kzalloc(E1,E2); > +| > +- x = vmalloc(E1); > ++ x = vzalloc(E1); > +| > +- x = (T *)vmalloc(E1); > ++ x = vzalloc(E1); > +| > +- x = (T)vmalloc(E1); > ++ x = (T)vzalloc(E1); > +| > +- x = dma_alloc_coherent(E2,E1,E3,E4); > ++ x = dma_zalloc_coherent(E2,E1,E3,E4); > +| > +- x = (T *)dma_alloc_coherent(E2,E1,E3,E4); > ++ x = dma_zalloc_coherent(E2,E1,E3,E4); > +| > +- x = (T)dma_alloc_coherent(E2,E1,E3,E4); > ++ x = (T)dma_zalloc_coherent(E2,E1,E3,E4); > +| > +- x = kmalloc_node(E1,E2,E3); > ++ x = kzalloc_node(E1,E2,E3); > +| > +- x = (T *)kmalloc_node(E1,E2,E3); > ++ x = kzalloc_node(E1,E2,E3); > +| > +- x = (T)kmalloc_node(E1,E2,E3); > ++ x = (T)kzalloc_node(E1,E2,E3); > +| > +- x = kmem_cache_alloc(E3,E4); > ++ x = kmem_cache_zalloc(E3,E4); > +| > +- x = (T *)kmem_cache_alloc(E3,E4); > ++ x = kmem_cache_zalloc(E3,E4); > +| > +- x = (T)kmem_cache_alloc(E3,E4); > ++ x = (T)kmem_cache_zalloc(E3,E4); > +| > +- x = kmem_alloc(E1,E2); > ++ x = kmem_zalloc(E1,E2); > +| > +- x = (T *)kmem_alloc(E1,E2); > ++ x = kmem_zalloc(E1,E2); > +| > +- x = (T)kmem_alloc(E1,E2); > ++ x = (T)kmem_zalloc(E1,E2); > +| > +- x = devm_kmalloc(E2,E1,E3); > ++ x = devm_kzalloc(E2,E1,E3); > +| > +- x = (T *)devm_kmalloc(E2,E1,E3); > ++ x = devm_kzalloc(E2,E1,E3); > +| > +- x = (T)devm_kmalloc(E2,E1,E3); > ++ x = (T)devm_kzalloc(E2,E1,E3); > +| > +- x = kvmalloc(E1,E2); > ++ x = kvzalloc(E1,E2); > +| > +- x = (T *)kvmalloc(E1,E2); > ++ x = kvzalloc(E1,E2); > +| > +- x = (T)kvmalloc(E1,E2); > ++ x = (T)kvzalloc(E1,E2); > +| > +- x = pci_alloc_consistent(E2,E1,E3); > ++ x = pci_zalloc_consistent(E2,E1,E3); > +| > +- x = (T *)pci_alloc_consistent(E2,E1,E3); > ++ x = pci_zalloc_consistent(E2,E1,E3); > +| > +- x = (T)pci_alloc_consistent(E2,E1,E3); > ++ x = (T)pci_zalloc_consistent(E2,E1,E3); > +| > +- x = kvmalloc_node(E1,E2,E3); > ++ x = kvzalloc_node(E1,E2,E3); > +| > +- x = (T *)kvmalloc_node(E1,E2,E3); > ++ x = kvzalloc_node(E1,E2,E3); > +| > +- x = (T)kvmalloc_node(E1,E2,E3); > ++ x = (T)kvzalloc_node(E1,E2,E3); > +) > + if ((x==NULL) || ...) S > +- memset((T2)x,0,E1); > + > +//---------------------------------------------------------- > +// For org mode > +//---------------------------------------------------------- > + > +@r depends on org || report@ > +type T, T2; > +expression x; > +expression E1,E2; > +statement S; > +position p; > +@@ > + > + x = (T)kmalloc@p(E1,E2); > + if ((x==NULL) || ...) S > + memset((T2)x,0,E1); > + > +@script:python depends on org@ > +p << r.p; > +x << r.x; > +@@ > + > +msg="%s" % (x) > +msg_safe=msg.replace("[","@(").replace("]",")") > +coccilib.org.print_todo(p[0], msg_safe) > + > +@script:python depends on report@ > +p << r.p; > +x << r.x; > +@@ > + > +msg="WARNING: kzalloc should be used for %s, instead of kmalloc/memset" % (x) > +coccilib.report.print_report(p[0], msg) > + > +//----------------------------------------------------------------- > +@r1 depends on org || report@ > +type T, T2; > +expression x; > +expression E1; > +statement S; > +position p; > +@@ > + > + x = (T)vmalloc@p(E1); > + if ((x==NULL) || ...) S > + memset((T2)x,0,E1); > + > +@script:python depends on org@ > +p << r1.p; > +x << r1.x; > +@@ > + > +msg="%s" % (x) > +msg_safe=msg.replace("[","@(").replace("]",")") > +coccilib.org.print_todo(p[0], msg_safe) > + > +@script:python depends on report@ > +p << r1.p; > +x << r1.x; > +@@ > + > +msg="WARNING: vzalloc should be used for %s, instead of vmalloc/memset" % (x) > +coccilib.report.print_report(p[0], msg) > + > +//----------------------------------------------------------------- > +@r2 depends on org || report@ > +type T, T2; > +expression x; > +expression E1,E2,E3,E4; > +statement S; > +position p; > +@@ > + > + x = (T)dma_alloc_coherent@p(E2,E1,E3,E4); > + if ((x==NULL) || ...) S > + memset((T2)x,0,E1); > + > +@script:python depends on org@ > +p << r2.p; > +x << r2.x; > +@@ > + > +msg="%s" % (x) > +msg_safe=msg.replace("[","@(").replace("]",")") > +coccilib.org.print_todo(p[0], msg_safe) > + > +@script:python depends on report@ > +p << r2.p; > +x << r2.x; > +@@ > + > +msg="WARNING: dma_zalloc_coherent should be used for %s, instead of dma_alloc_coherent/memset" % (x) > +coccilib.report.print_report(p[0], msg) > + > +//----------------------------------------------------------------- > +@r3 depends on org || report@ > +type T, T2; > +expression x; > +expression E1,E2,E3; > +statement S; > +position p; > +@@ > + > + x = (T)kmalloc_node@p(E1,E2,E3); > + if ((x==NULL) || ...) S > + memset((T2)x,0,E1); > + > +@script:python depends on org@ > +p << r3.p; > +x << r3.x; > +@@ > + > +msg="%s" % (x) > +msg_safe=msg.replace("[","@(").replace("]",")") > +coccilib.org.print_todo(p[0], msg_safe) > + > +@script:python depends on report@ > +p << r3.p; > +x << r3.x; > +@@ > + > +msg="WARNING: kzalloc_node should be used for %s, instead of kmalloc_node/memset" % (x) > +coccilib.report.print_report(p[0], msg) > + > +//----------------------------------------------------------------- > +@r4 depends on org || report@ > +type T, T2; > +expression x; > +expression E1,E2,E3; > +statement S; > +position p; > +@@ > + > + x = (T)kmem_cache_alloc@p(E2,E3); > + if ((x==NULL) || ...) S > + memset((T2)x,0,E1); > + > +@script:python depends on org@ > +p << r4.p; > +x << r4.x; > +@@ > + > +msg="%s" % (x) > +msg_safe=msg.replace("[","@(").replace("]",")") > +coccilib.org.print_todo(p[0], msg_safe) > + > +@script:python depends on report@ > +p << r4.p; > +x << r4.x; > +@@ > + > +msg="WARNING: kmem_cache_zalloc should be used for %s, instead of kmem_cache_alloc/memset" % (x) > +coccilib.report.print_report(p[0], msg) > + > +//----------------------------------------------------------------- > +@r5 depends on org || report@ > +type T, T2; > +expression x; > +expression E1,E2; > +statement S; > +position p; > +@@ > + > + x = (T)kmem_alloc@p(E1,E2); > + if ((x==NULL) || ...) S > + memset((T2)x,0,E1); > + > +@script:python depends on org@ > +p << r5.p; > +x << r5.x; > +@@ > + > +msg="%s" % (x) > +msg_safe=msg.replace("[","@(").replace("]",")") > +coccilib.org.print_todo(p[0], msg_safe) > + > +@script:python depends on report@ > +p << r5.p; > +x << r5.x; > +@@ > + > +msg="WARNING: kmem_zalloc should be used for %s, instead of kmem_alloc/memset" % (x) > +coccilib.report.print_report(p[0], msg) > + > +//----------------------------------------------------------------- > +@r6 depends on org || report@ > +type T, T2; > +expression x; > +expression E1,E2,E3; > +statement S; > +position p; > +@@ > + > + x = (T)devm_kmalloc@p(E2,E1,E3); > + if ((x==NULL) || ...) S > + memset((T2)x,0,E1); > + > +@script:python depends on org@ > +p << r6.p; > +x << r6.x; > +@@ > + > +msg="%s" % (x) > +msg_safe=msg.replace("[","@(").replace("]",")") > +coccilib.org.print_todo(p[0], msg_safe) > + > +@script:python depends on report@ > +p << r6.p; > +x << r6.x; > +@@ > + > +msg="WARNING: devm_kzalloc should be used for %s, instead of devm_kmalloc/memset" % (x) > +coccilib.report.print_report(p[0], msg) > + > +//----------------------------------------------------------------- > +@r7 depends on org || report@ > +type T, T2; > +expression x; > +expression E1,E2; > +statement S; > +position p; > +@@ > + > + x = (T)kvmalloc@p(E1,E2); > + if ((x==NULL) || ...) S > + memset((T2)x,0,E1); > + > +@script:python depends on org@ > +p << r7.p; > +x << r7.x; > +@@ > + > +msg="%s" % (x) > +msg_safe=msg.replace("[","@(").replace("]",")") > +coccilib.org.print_todo(p[0], msg_safe) > + > +@script:python depends on report@ > +p << r7.p; > +x << r7.x; > +@@ > + > +msg="WARNING: kvzalloc should be used for %s, instead of kvmalloc/memset" % (x) > +coccilib.report.print_report(p[0], msg) > + > +//----------------------------------------------------------------- > +@r8 depends on org || report@ > +type T, T2; > +expression x; > +expression E1,E2,E3; > +statement S; > +position p; > +@@ > + > + x = (T)pci_alloc_consistent@p(E2,E1,E3); > + if ((x==NULL) || ...) S > + memset((T2)x,0,E1); > + > +@script:python depends on org@ > +p << r8.p; > +x << r8.x; > +@@ > + > +msg="%s" % (x) > +msg_safe=msg.replace("[","@(").replace("]",")") > +coccilib.org.print_todo(p[0], msg_safe) > + > +@script:python depends on report@ > +p << r8.p; > +x << r8.x; > +@@ > + > +msg="WARNING: pci_zalloc_consistent should be used for %s, instead of pci_alloc_consistent/memset" % (x) > +coccilib.report.print_report(p[0], msg) > +//----------------------------------------------------------------- > +@r9 depends on org || report@ > +type T, T2; > +expression x; > +expression E1,E2,E3; > +statement S; > +position p; > +@@ > + > + x = (T)kvmalloc_node@p(E1,E2,E3); > + if ((x==NULL) || ...) S > + memset((T2)x,0,E1); > + > +@script:python depends on org@ > +p << r9.p; > +x << r9.x; > +@@ > + > +msg="%s" % (x) > +msg_safe=msg.replace("[","@(").replace("]",")") > +coccilib.org.print_todo(p[0], msg_safe) > + > +@script:python depends on report@ > +p << r9.p; > +x << r9.x; > +@@ > + > +msg="WARNING: kvzalloc_node should be used for %s, instead of kvmalloc_node/memset" % (x) > +coccilib.report.print_report(p[0], msg) > -- > 2.7.4 > >