Linux 4.16.11
[linux/fpc-iii.git] / scripts / coccinelle / misc / of_table.cocci
blob4693ea744753414451496d3ff189603ad47bfa15
1 // SPDX-License-Identifier: GPL-2.0
2 /// Make sure (of/i2c/platform)_device_id tables are NULL terminated
3 //
4 // Keywords: of_table i2c_table platform_table
5 // Confidence: Medium
6 // Options: --include-headers
8 virtual patch
9 virtual context
10 virtual org
11 virtual report
13 @depends on context@
14 identifier var, arr;
15 expression E;
18 struct \(of_device_id \| i2c_device_id \| platform_device_id\) arr[] = {
19         ...,
20         {
21         .var = E,
22 *       }
25 struct \(of_device_id \| i2c_device_id \| platform_device_id\) arr[] = {
26         ...,
27 *       { ..., E, ... },
31 @depends on patch@
32 identifier var, arr;
33 expression E;
36 struct \(of_device_id \| i2c_device_id \| platform_device_id\) arr[] = {
37         ...,
38         {
39         .var = E,
40 -       }
41 +       },
42 +       { }
45 struct \(of_device_id \| i2c_device_id \| platform_device_id\) arr[] = {
46         ...,
47         { ..., E, ... },
48 +       { },
52 @r depends on org || report@
53 position p1;
54 identifier var, arr;
55 expression E;
58 struct \(of_device_id \| i2c_device_id \| platform_device_id\) arr[] = {
59         ...,
60         {
61         .var = E,
62         }
63         @p1
66 struct \(of_device_id \| i2c_device_id \| platform_device_id\) arr[] = {
67         ...,
68         { ..., E, ... }
69         @p1
73 @script:python depends on org@
74 p1 << r.p1;
75 arr << r.arr;
78 cocci.print_main(arr,p1)
80 @script:python depends on report@
81 p1 << r.p1;
82 arr << r.arr;
85 msg = "%s is not NULL terminated at line %s" % (arr, p1[0].line)
86 coccilib.report.print_report(p1[0],msg)