From: Markus Elfring <elfr...@users.sourceforge.net>
Date: Sun, 25 Oct 2020 18:54:36 +0100

A disjunction is applied by this script for the semantic patch language.
This construct uses short-circuit evaluation. It has got the consequence
that the last element of the specified condition will only be checked
if all previous parts did not match. Such a technical detail leads to
a recommended ordering of condition parts if you would like to care for
optimal run time characteristics of SmPL code.

An usage incidence was determined for the specified identifiers in source
files from the software “Linux next-20201023” by another SmPL script.

See also:
Determination of an usage statistic for memory allocation calls
https://lore.kernel.org/cocci/2774601.u91sIFNy1E@sonne/

This analysis result indicates a clear ranking for such function calls.
Thus reorder the SmPL disjunction items according to their usage incidence.

Signed-off-by: Markus Elfring <elfr...@users.sourceforge.net>
---
 scripts/coccinelle/null/eno.cocci | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)

diff --git a/scripts/coccinelle/null/eno.cocci 
b/scripts/coccinelle/null/eno.cocci
index 81584ff87956..969cab5116a9 100644
--- a/scripts/coccinelle/null/eno.cocci
+++ b/scripts/coccinelle/null/eno.cocci
@@ -17,8 +17,16 @@ virtual report
 @depends on patch@
 expression x,E;
 @@
-
-x = 
\(kmalloc\|kzalloc\|kcalloc\|kmem_cache_alloc\|kmem_cache_zalloc\|kmem_cache_alloc_node\|kmalloc_node\|kzalloc_node\)(...)
+ x =
+(kzalloc
+|kmalloc
+|kcalloc
+|kmem_cache_alloc
+|kmem_cache_zalloc
+|kzalloc_node
+|kmalloc_node
+|kmem_cache_alloc_node
+)(...)
 ... when != x = E
 - IS_ERR(x)
 + !x
@@ -27,8 +35,7 @@ x = 
\(kmalloc\|kzalloc\|kcalloc\|kmem_cache_alloc\|kmem_cache_zalloc\|kmem_cache
 expression x,E;
 position p1,p2;
 @@
-
-*x = 
\(kmalloc@p1\|kzalloc@p1\|kcalloc@p1\|kmem_cache_alloc@p1\|kmem_cache_zalloc@p1\|kmem_cache_alloc_node@p1\|kmalloc_node@p1\|kzalloc_node@p1\)(...)
+*x = 
\(kzalloc@p1\|kmalloc@p1\|kcalloc@p1\|kmem_cache_alloc@p1\|kmem_cache_zalloc@p1\|kzalloc_node@p1\|kmalloc_node@p1\|kmem_cache_alloc_node@p1\)(...)
 ... when != x = E
 * IS_ERR@p2(x)

--
2.29.1

_______________________________________________
Cocci mailing list
Cocci@systeme.lip6.fr
https://systeme.lip6.fr/mailman/listinfo/cocci

Reply via email to