X-Git-Url: https://git.karo-electronics.de/?a=blobdiff_plain;f=scripts%2Fcoccinelle%2Fmisc%2Fof_table.cocci;fp=scripts%2Fcoccinelle%2Fmisc%2Fof_table.cocci;h=3c934046a06042afb3982b9e001280f36bb2340e;hb=c1fdb2d3389c5a1e7c559a37a4967c1d2580e75c;hp=0000000000000000000000000000000000000000;hpb=1700ff823b27b6572cf4c3cec66d279baa1a5d30;p=karo-tx-linux.git diff --git a/scripts/coccinelle/misc/of_table.cocci b/scripts/coccinelle/misc/of_table.cocci new file mode 100644 index 000000000000..3c934046a060 --- /dev/null +++ b/scripts/coccinelle/misc/of_table.cocci @@ -0,0 +1,62 @@ +/// Make sure of_device_id tables are NULL terminated +// +// Keywords: of_table +// Confidence: Medium +// Options: --include-headers + +virtual patch +virtual context +virtual org +virtual report + +@depends on context@ +identifier var, arr; +expression E; +@@ +struct of_device_id arr[] = { + ..., + { + .var = E, +* } +}; + +@depends on patch@ +identifier var, arr; +expression E; +@@ +struct of_device_id arr[] = { + ..., + { + .var = E, +- } ++ }, ++ { } +}; + +@r depends on org || report@ +position p1; +identifier var, arr; +expression E; +@@ +struct of_device_id arr[] = { + ..., + { + .var = E, + } + @p1 +}; + +@script:python depends on org@ +p1 << r.p1; +arr << r.arr; +@@ + +cocci.print_main(arr,p1) + +@script:python depends on report@ +p1 << r.p1; +arr << r.arr; +@@ + +msg = "%s is not NULL terminated at line %s" % (arr, p1[0].line) +coccilib.report.print_report(p1[0],msg)