]> git.droids-corp.org - dpdk.git/commitdiff
devtools: add script to fix unnecessary null checks
authorStephen Hemminger <stephen@networkplumber.org>
Wed, 9 Feb 2022 19:17:14 +0000 (11:17 -0800)
committerThomas Monjalon <thomas@monjalon.net>
Sat, 12 Feb 2022 11:06:31 +0000 (12:06 +0100)
This script is based on the idea of the nullfree script
in the Linux kernel. It finds cases where a check for null
pointer is done, but is unnecessary because the function
already handles NULL pointer.

Basic example:
       if (x->buf)
           rte_free(x->buf);
can be reduced to:
       rte_free(x->buf);

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
devtools/cocci/nullfree.cocci [new file with mode: 0644]

diff --git a/devtools/cocci/nullfree.cocci b/devtools/cocci/nullfree.cocci
new file mode 100644 (file)
index 0000000..363b614
--- /dev/null
@@ -0,0 +1,33 @@
+//
+// Remove unnecessary NULL pointer checks before free functions
+// All these functions work like libc free which allows
+// free(NULL) as a no-op.
+//
+@@
+expression E;
+@@
+(
+- if (E != NULL) free(E);
++ free(E);
+|
+- if (E != NULL) rte_bitmap_free(E);
++ rte_bitmap_free(E);
+|
+- if (E != NULL) rte_free(E);
++ rte_free(E);
+|
+- if (E != NULL) rte_hash_free(E);
++ rte_hash_free(E);
+|
+- if (E != NULL) rte_ring_free(E);
++ rte_ring_free(E);
+|
+- if (E != NULL) rte_pktmbuf_free(E);
++ rte_pktmbuf_free(E);
+|
+- if (E != NULL) rte_mempool_free(E);
++ rte_mempool_free(E);
+|
+- if (E != NULL) rte_kvargs_free(E);
++ rte_kvargs_free(E);
+)