These changes are the raw update to linux-4.4.6-rt14. Kernel sources
[kvmfornfv.git] / kernel / scripts / coccinelle / misc / of_table.cocci
1 /// Make sure (of/i2c/platform)_device_id tables are NULL terminated
2 //
3 // Keywords: of_table i2c_table platform_table
4 // Confidence: Medium
5 // Options: --include-headers
6
7 virtual patch
8 virtual context
9 virtual org
10 virtual report
11
12 @depends on context@
13 identifier var, arr;
14 expression E;
15 @@
16 (
17 struct \(of_device_id \| i2c_device_id \| platform_device_id\) arr[] = {
18         ...,
19         {
20         .var = E,
21 *       }
22 };
23 |
24 struct \(of_device_id \| i2c_device_id \| platform_device_id\) arr[] = {
25         ...,
26 *       { ..., E, ... },
27 };
28 )
29
30 @depends on patch@
31 identifier var, arr;
32 expression E;
33 @@
34 (
35 struct \(of_device_id \| i2c_device_id \| platform_device_id\) arr[] = {
36         ...,
37         {
38         .var = E,
39 -       }
40 +       },
41 +       { }
42 };
43 |
44 struct \(of_device_id \| i2c_device_id \| platform_device_id\) arr[] = {
45         ...,
46         { ..., E, ... },
47 +       { },
48 };
49 )
50
51 @r depends on org || report@
52 position p1;
53 identifier var, arr;
54 expression E;
55 @@
56 (
57 struct \(of_device_id \| i2c_device_id \| platform_device_id\) arr[] = {
58         ...,
59         {
60         .var = E,
61         }
62         @p1
63 };
64 |
65 struct \(of_device_id \| i2c_device_id \| platform_device_id\) arr[] = {
66         ...,
67         { ..., E, ... }
68         @p1
69 };
70 )
71
72 @script:python depends on org@
73 p1 << r.p1;
74 arr << r.arr;
75 @@
76
77 cocci.print_main(arr,p1)
78
79 @script:python depends on report@
80 p1 << r.p1;
81 arr << r.arr;
82 @@
83
84 msg = "%s is not NULL terminated at line %s" % (arr, p1[0].line)
85 coccilib.report.print_report(p1[0],msg)