lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Thu, 28 Jul 2016 13:59:44 +0530 From: Amitoj Kaur Chawla <amitoj1606@...il.com> To: Julia.Lawall@...6.fr, Gilles.Muller@...6.fr, nicolas.palix@...g.fr, mmarek@...e.com, cocci@...teme.lip6.fr, linux-kernel@...r.kernel.org Subject: [PATCH v2] Coccinelle: Script to replace allocate and memset with zalloc functions This script finds instances of allocate and memset which can be replaced with a direct call to zalloc equivalent of a function. Signed-off-by: Amitoj Kaur Chawla <amitoj1606@...il.com> --- Changes in v2: -Modified commit message and subject scripts/coccinelle/api/zalloc.cocci | 556 ++++++++++++++++++++++++++++++++++++ 1 file changed, 556 insertions(+) create mode 100644 scripts/coccinelle/api/zalloc.cocci diff --git a/scripts/coccinelle/api/zalloc.cocci b/scripts/coccinelle/api/zalloc.cocci new file mode 100644 index 0000000..4f94e43 --- /dev/null +++ b/scripts/coccinelle/api/zalloc.cocci @@ -0,0 +1,556 @@ +/// Prefer zalloc functions instead of using allocate and memcpy. +/// +// Confidence: High +// Copyright: (C) 2016 Amitoj Kaur Chawla + +virtual patch +virtual context +virtual org +virtual report + +@...1 depends on patch && !context && !org && !report@ +type T; +T *d; +statement S; +@@ + + d = +- dma_pool_alloc ++ dma_pool_zalloc + (...); + if (!d) S +- memset(d, 0, sizeof(T)); + +@...2 depends on patch && !context && !org && !report@ +expression d; +statement S; +@@ + + d = +- dma_pool_alloc ++ dma_pool_zalloc + (...); + if (!d) S +- memset(d, 0, sizeof(*d)); +@vz1 depends on patch && !context && !org && !report@ +type T; +T *d; +statement S; +@@ + + d = +- vmalloc ++ vzalloc + (...); + if (!d) S +- memset(d, 0, sizeof(T)); + +@vz2 depends on patch && !context && !org && !report@ +expression d; +statement S; +@@ + + d = +- vmalloc ++ vzalloc + (...); + if (!d) S +- memset(d, 0, sizeof(*d)); +@...1 depends on patch && !context && !org && !report@ +type T; +T *d; +statement S; +@@ + + d = +- vmalloc_node ++ vzalloc_node + (...); + if (!d) S +- memset(d, 0, sizeof(T)); + +@...2 depends on patch && !context && !org && !report@ +expression d; +statement S; +@@ + + d = +- vmalloc_node ++ vzalloc_node + (...); + if (!d) S +- memset(d, 0, sizeof(*d)); +@...1 depends on patch && !context && !org && !report@ +type T; +T *d; +statement S; +@@ + + d = +- pci_alloc_consistent ++ pci_zalloc_consistent + (...); + if (!d) S +- memset(d, 0, sizeof(T)); + +@...2 depends on patch && !context && !org && !report@ +expression d; +statement S; +@@ + + d = +- pci_alloc_consistent ++ pci_zalloc_consistent + (...); + if (!d) S +- memset(d, 0, sizeof(*d)); +@...m1 depends on patch && !context && !org && !report@ +type T; +T *d; +statement S; +@@ + + d = +- kmem_cache_alloc ++ kmem_cache_zalloc + (...); + if (!d) S +- memset(d, 0, sizeof(T)); + +@...m2 depends on patch && !context && !org && !report@ +expression d; +statement S; +@@ + + d = +- kmem_cache_alloc ++ kmem_cache_zalloc + (...); + if (!d) S +- memset(d, 0, sizeof(*d)); +@...3 depends on patch && !context && !org && !report@ +type T; +T *d; +statement S; +@@ + + d = +- dma_alloc_coherent ++ dma_zalloc_coherent + (...); + if (!d) S +- memset(d, 0, sizeof(T)); + +@...4 depends on patch && !context && !org && !report@ +expression d; +statement S; +@@ + + d = +- dma_alloc_coherent ++ dma_zalloc_coherent + (...); + if (!d) S +- memset(d, 0, sizeof(*d)); +@...i1 depends on patch && !context && !org && !report@ +type T; +T *d; +statement S; +@@ + + d = +- acpi_os_allocate ++ acpi_os_allocate_zeroed + (...); + if (!d) S +- memset(d, 0, sizeof(T)); + +@...i2 depends on patch && !context && !org && !report@ +expression d; +statement S; +@@ + + d = +- acpi_os_allocate ++ acpi_os_allocate_zeroed + (...); + if (!d) S +- memset(d, 0, sizeof(*d)); + +// ---------------------------------------------------------------------------- + +@...1_context depends on !patch && (context || org || report)@ +type T; +statement S; +T *d; +position j0; +@@ + + d@j0 = +* dma_pool_alloc + (...); + if (!d) S +* memset(d, 0, sizeof(T)); + +@...2_context depends on !patch && (context || org || report)@ +statement S; +expression d; +position j0; +@@ + + d@j0 = +* dma_pool_alloc + (...); + if (!d) S +* memset(d, 0, sizeof(*d)); + +@..._context depends on !patch && (context || org || report)@ +type T; +statement S; +T *d; +position j0; +@@ + + d@j0 = +* vmalloc + (...); + if (!d) S +* memset(d, 0, sizeof(T)); + +@..._context depends on !patch && (context || org || report)@ +statement S; +expression d; +position j0; +@@ + + d@j0 = +* vmalloc + (...); + if (!d) S +* memset(d, 0, sizeof(*d)); + +@...1_context depends on !patch && (context || org || report)@ +type T; +statement S; +T *d; +position j0; +@@ + + d@j0 = +* vmalloc_node + (...); + if (!d) S +* memset(d, 0, sizeof(T)); + +@...2_context depends on !patch && (context || org || report)@ +statement S; +expression d; +position j0; +@@ + + d@j0 = +* vmalloc_node + (...); + if (!d) S +* memset(d, 0, sizeof(*d)); + +@...1_context depends on !patch && (context || org || report)@ +type T; +statement S; +T *d; +position j0; +@@ + + d@j0 = +* pci_alloc_consistent + (...); + if (!d) S +* memset(d, 0, sizeof(T)); + +@...2_context depends on !patch && (context || org || report)@ +statement S; +expression d; +position j0; +@@ + + d@j0 = +* pci_alloc_consistent + (...); + if (!d) S +* memset(d, 0, sizeof(*d)); + +@...m1_context depends on !patch && (context || org || report)@ +type T; +statement S; +T *d; +position j0; +@@ + + d@j0 = +* kmem_cache_alloc + (...); + if (!d) S +* memset(d, 0, sizeof(T)); + +@...m2_context depends on !patch && (context || org || report)@ +statement S; +expression d; +position j0; +@@ + + d@j0 = +* kmem_cache_alloc + (...); + if (!d) S +* memset(d, 0, sizeof(*d)); + +@...3_context depends on !patch && (context || org || report)@ +type T; +statement S; +T *d; +position j0; +@@ + + d@j0 = +* dma_alloc_coherent + (...); + if (!d) S +* memset(d, 0, sizeof(T)); + +@...4_context depends on !patch && (context || org || report)@ +statement S; +expression d; +position j0; +@@ + + d@j0 = +* dma_alloc_coherent + (...); + if (!d) S +* memset(d, 0, sizeof(*d)); + +@...i1_context depends on !patch && (context || org || report)@ +type T; +statement S; +T *d; +position j0; +@@ + + d@j0 = +* acpi_os_allocate + (...); + if (!d) S +* memset(d, 0, sizeof(T)); + +@...i2_context depends on !patch && (context || org || report)@ +statement S; +expression d; +position j0; +@@ + + d@j0 = +* acpi_os_allocate + (...); + if (!d) S +* memset(d, 0, sizeof(*d)); + +// ---------------------------------------------------------------------------- + +@...ipt:python dma1_org depends on org@ +j0 << dma1_context.j0; +@@ + +msg = "Replace with dma_pool_zalloc." +coccilib.org.print_todo(j0[0], msg) + +@...ipt:python dma2_org depends on org@ +j0 << dma2_context.j0; +@@ + +msg = "Replace with dma_pool_zalloc." +coccilib.org.print_todo(j0[0], msg) + +@...ipt:python vz1_org depends on org@ +j0 << vz1_context.j0; +@@ + +msg = "Replace with vzalloc." +coccilib.org.print_todo(j0[0], msg) + +@...ipt:python vz2_org depends on org@ +j0 << vz2_context.j0; +@@ + +msg = "Replace with vzalloc." +coccilib.org.print_todo(j0[0], msg) + +@...ipt:python vzn1_org depends on org@ +j0 << vzn1_context.j0; +@@ + +msg = "Replace with vzalloc_node." +coccilib.org.print_todo(j0[0], msg) + +@...ipt:python vzn2_org depends on org@ +j0 << vzn2_context.j0; +@@ + +msg = "Replace with vzalloc_node." +coccilib.org.print_todo(j0[0], msg) + +@...ipt:python pci1_org depends on org@ +j0 << pci1_context.j0; +@@ + +msg = "Replace with pci_zalloc_consistent." +coccilib.org.print_todo(j0[0], msg) + +@...ipt:python pci2_org depends on org@ +j0 << pci2_context.j0; +@@ + +msg = "Replace with pci_zalloc_consistent." +coccilib.org.print_todo(j0[0], msg) + +@...ipt:python kmem1_org depends on org@ +j0 << kmem1_context.j0; +@@ + +msg = "Replace with kmem_cache_zalloc." +coccilib.org.print_todo(j0[0], msg) + +@...ipt:python kmem2_org depends on org@ +j0 << kmem2_context.j0; +@@ + +msg = "Replace with kmem_cache_zalloc." +coccilib.org.print_todo(j0[0], msg) + +@...ipt:python dma3_org depends on org@ +j0 << dma3_context.j0; +@@ + +msg = "Replace with dma_zalloc_coherent." +coccilib.org.print_todo(j0[0], msg) + +@...ipt:python dma4_org depends on org@ +j0 << dma4_context.j0; +@@ + +msg = "Replace with dma_zalloc_coherent." +coccilib.org.print_todo(j0[0], msg) + +@...ipt:python acpi1_org depends on org@ +j0 << acpi1_context.j0; +@@ + +msg = "Replace with acpi_os_allocate_zeroed." +coccilib.org.print_todo(j0[0], msg) + +@...ipt:python acpi2_org depends on org@ +j0 << acpi2_context.j0; +@@ + +msg = "Replace with acpi_os_allocate_zeroed." +coccilib.org.print_todo(j0[0], msg) + +// ---------------------------------------------------------------------------- + +@...ipt:python dma1_report depends on report@ +j0 << dma1_context.j0; +@@ + +msg = "Replace with dma_pool_zalloc." +coccilib.report.print_report(j0[0], msg) + +@...ipt:python dma2_report depends on report@ +j0 << dma2_context.j0; +@@ + +msg = "Replace with dma_pool_zalloc." +coccilib.report.print_report(j0[0], msg) + +@...ipt:python vz1_report depends on report@ +j0 << vz1_context.j0; +@@ + +msg = "Replace with vzalloc." +coccilib.report.print_report(j0[0], msg) + +@...ipt:python vz2_report depends on report@ +j0 << vz2_context.j0; +@@ + +msg = "Replace with vzalloc." +coccilib.report.print_report(j0[0], msg) + +@...ipt:python vzn1_report depends on report@ +j0 << vzn1_context.j0; +@@ + +msg = "Replace with vzalloc_node." +coccilib.report.print_report(j0[0], msg) + +@...ipt:python vzn2_report depends on report@ +j0 << vzn2_context.j0; +@@ + +msg = "Replace with vzalloc_node." +coccilib.report.print_report(j0[0], msg) + +@...ipt:python pci1_report depends on report@ +j0 << pci1_context.j0; +@@ + +msg = "Replace with pci_zalloc_consistent." +coccilib.report.print_report(j0[0], msg) + +@...ipt:python pci2_report depends on report@ +j0 << pci2_context.j0; +@@ + +msg = "Replace with pci_zalloc_consistent." +coccilib.report.print_report(j0[0], msg) + +@...ipt:python kmem1_report depends on report@ +j0 << kmem1_context.j0; +@@ + +msg = "Replace with kmem_cache_zalloc." +coccilib.report.print_report(j0[0], msg) + +@...ipt:python kmem2_report depends on report@ +j0 << kmem2_context.j0; +@@ + +msg = "Replace with kmem_cache_zalloc." +coccilib.report.print_report(j0[0], msg) + +@...ipt:python dma3_report depends on report@ +j0 << dma3_context.j0; +@@ + +msg = "Replace with dma_zalloc_coherent." +coccilib.report.print_report(j0[0], msg) + +@...ipt:python dma4_report depends on report@ +j0 << dma4_context.j0; +@@ + +msg = "Replace with dma_zalloc_coherent." +coccilib.report.print_report(j0[0], msg) + +@...ipt:python acpi1_report depends on report@ +j0 << acpi1_context.j0; +@@ + +msg = "Replace with acpi_os_allocate_zeroed." +coccilib.report.print_report(j0[0], msg) + +@...ipt:python acpi2_report depends on report@ +j0 << acpi2_context.j0; +@@ + +msg = "Replace with acpi_os_allocate_zeroed." +coccilib.report.print_report(j0[0], msg) + -- 1.9.1
Powered by blists - more mailing lists