Messages in this thread Patch in this message | | | From | Denis Efremov <> | Subject | [PATCH] coccinelle: api: add kzfree script | Date | Thu, 4 Jun 2020 17:08:04 +0300 |
| |
Check for memset() with 0 followed by kfree().
Signed-off-by: Denis Efremov <efremov@linux.com> --- Patches: 1. kzfree in drivers/w1 https://lkml.org/lkml/2020/6/4/438 2. kzfree in drivers/iommu/ https://lkml.org/lkml/2020/6/4/421 3. kzfree in drivers/scsi/ https://lkml.org/lkml/2020/6/4/442
scripts/coccinelle/api/kzfree.cocci | 53 +++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 scripts/coccinelle/api/kzfree.cocci
diff --git a/scripts/coccinelle/api/kzfree.cocci b/scripts/coccinelle/api/kzfree.cocci new file mode 100644 index 000000000000..c6b8f7676af4 --- /dev/null +++ b/scripts/coccinelle/api/kzfree.cocci @@ -0,0 +1,53 @@ +// SPDX-License-Identifier: GPL-2.0-only +/// +/// Use kzfree rather than memset with 0 followed by kfree +/// +// Confidence: High +// Copyright: (C) 2020 Denis Efremov ISPRAS +// Options: --no-includes --include-headers +// +// Keywords: kzfree +// + +virtual context +virtual org +virtual report +virtual patch + +// Ignore kzfree definition +// Ignore kasan test +@r depends on !patch && !(file in "lib/test_kasan.c") && !(file in "mm/slab_common.c")@ +expression E; +position p; +@@ + +( +* memset(E, 0, ...); +| +* memset(E, '\0', ...); +) +* kfree(E)@p; + +@r1 depends on patch && !(file in "lib/test_kasan.c") && !(file in "mm/slab_common.c")@ +expression E; +@@ + +( +- memset(E, 0, ...); +| +- memset(E, '\0', ...); +) +- kfree(E); ++ kzfree(E); + +@script:python depends on report@ +p << r.p; +@@ + +coccilib.report.print_report(p[0], "WARNING opportunity for kzfree") + +@script:python depends on org@ +p << r.p; +@@ + +coccilib.org.print_todo(p[0], "WARNING opportunity for kzfree") -- 2.26.2
| |