xref: /linux/scripts/coccinelle/misc/of_table.cocci (revision 3932b9ca55b0be314a36d3e84faff3e823c081f5)
1/// Make sure of_device_id tables are NULL terminated
2//
3// Keywords: of_table
4// Confidence: Medium
5// Options: --include-headers
6
7virtual patch
8virtual context
9virtual org
10virtual report
11
12@depends on context@
13identifier var, arr;
14expression E;
15@@
16struct of_device_id arr[] = {
17	...,
18	{
19	.var = E,
20*	}
21};
22
23@depends on patch@
24identifier var, arr;
25expression E;
26@@
27struct of_device_id arr[] = {
28	...,
29	{
30	.var = E,
31-	}
32+	},
33+	{ }
34};
35
36@r depends on org || report@
37position p1;
38identifier var, arr;
39expression E;
40@@
41struct of_device_id arr[] = {
42	...,
43	{
44	.var = E,
45	}
46	@p1
47};
48
49@script:python depends on org@
50p1 << r.p1;
51arr << r.arr;
52@@
53
54cocci.print_main(arr,p1)
55
56@script:python depends on report@
57p1 << r.p1;
58arr << r.arr;
59@@
60
61msg = "%s is not NULL terminated at line %s" % (arr, p1[0].line)
62coccilib.report.print_report(p1[0],msg)
63