From e856f3a7d706b37d8be9b41e41b19f4919570e57 Mon Sep 17 00:00:00 2001 From: Julia Lawall Date: Thu, 1 Feb 2018 10:48:52 +0100 Subject: [PATCH] coccinelle: devm_free: reduce false positives Some files use both a non-devm allocation and a devm_allocation. Don't complain about a free when the same function contains a non-devm allocation. Signed-off-by: Julia Lawall Signed-off-by: Masahiro Yamada --- scripts/coccinelle/free/devm_free.cocci | 55 ++++++++++++++++++++++++- 1 file changed, 54 insertions(+), 1 deletion(-) diff --git a/scripts/coccinelle/free/devm_free.cocci b/scripts/coccinelle/free/devm_free.cocci index c990d2c7ee16..b2a2cf8bf81f 100644 --- a/scripts/coccinelle/free/devm_free.cocci +++ b/scripts/coccinelle/free/devm_free.cocci @@ -56,9 +56,62 @@ expression x; x = devm_ioport_map(...) ) +@safe depends on context || org || report exists@ +expression x; +position p; +@@ + +( + x = kmalloc(...) +| + x = kvasprintf(...) +| + x = kasprintf(...) +| + x = kzalloc(...) +| + x = kmalloc_array(...) +| + x = kcalloc(...) +| + x = kstrdup(...) +| + x = kmemdup(...) +| + x = get_free_pages(...) +| + x = request_irq(...) +| + x = ioremap(...) +| + x = ioremap_nocache(...) +| + x = ioport_map(...) +) +... +( + kfree@p(x) +| + kzfree@p(x) +| + __krealloc@p(x, ...) +| + krealloc@p(x, ...) +| + free_pages@p(x, ...) +| + free_page@p(x) +| + free_irq@p(x) +| + iounmap@p(x) +| + ioport_unmap@p(x) +) + @pb@ expression r.x; -position p; +position p != safe.p; @@ (