blob: 4693ea744753414451496d3ff189603ad47bfa15 [file] [log] [blame]
Greg Kroah-Hartmanb2441312017-11-01 15:07:57 +01001// SPDX-License-Identifier: GPL-2.0
Daniel Granat67afc212015-10-23 17:31:06 +02002/// Make sure (of/i2c/platform)_device_id tables are NULL terminated
Stephen Boyd2d5c5db2014-06-03 20:25:27 +02003//
Daniel Granat67afc212015-10-23 17:31:06 +02004// Keywords: of_table i2c_table platform_table
Stephen Boyd2d5c5db2014-06-03 20:25:27 +02005// Confidence: Medium
6// Options: --include-headers
7
8virtual patch
9virtual context
10virtual org
11virtual report
12
13@depends on context@
14identifier var, arr;
15expression E;
16@@
Daniel Granat67afc212015-10-23 17:31:06 +020017(
18struct \(of_device_id \| i2c_device_id \| platform_device_id\) arr[] = {
Stephen Boyd2d5c5db2014-06-03 20:25:27 +020019 ...,
20 {
21 .var = E,
22* }
23};
Daniel Granat67afc212015-10-23 17:31:06 +020024|
25struct \(of_device_id \| i2c_device_id \| platform_device_id\) arr[] = {
26 ...,
27* { ..., E, ... },
28};
29)
Stephen Boyd2d5c5db2014-06-03 20:25:27 +020030
31@depends on patch@
32identifier var, arr;
33expression E;
34@@
Daniel Granat67afc212015-10-23 17:31:06 +020035(
36struct \(of_device_id \| i2c_device_id \| platform_device_id\) arr[] = {
Stephen Boyd2d5c5db2014-06-03 20:25:27 +020037 ...,
38 {
39 .var = E,
40- }
41+ },
42+ { }
43};
Daniel Granat67afc212015-10-23 17:31:06 +020044|
45struct \(of_device_id \| i2c_device_id \| platform_device_id\) arr[] = {
46 ...,
47 { ..., E, ... },
48+ { },
49};
50)
Stephen Boyd2d5c5db2014-06-03 20:25:27 +020051
52@r depends on org || report@
53position p1;
54identifier var, arr;
55expression E;
56@@
Daniel Granat67afc212015-10-23 17:31:06 +020057(
58struct \(of_device_id \| i2c_device_id \| platform_device_id\) arr[] = {
Stephen Boyd2d5c5db2014-06-03 20:25:27 +020059 ...,
60 {
61 .var = E,
62 }
63 @p1
64};
Daniel Granat67afc212015-10-23 17:31:06 +020065|
66struct \(of_device_id \| i2c_device_id \| platform_device_id\) arr[] = {
67 ...,
68 { ..., E, ... }
69 @p1
70};
71)
Stephen Boyd2d5c5db2014-06-03 20:25:27 +020072
73@script:python depends on org@
74p1 << r.p1;
75arr << r.arr;
76@@
77
78cocci.print_main(arr,p1)
79
80@script:python depends on report@
81p1 << r.p1;
82arr << r.arr;
83@@
84
85msg = "%s is not NULL terminated at line %s" % (arr, p1[0].line)
86coccilib.report.print_report(p1[0],msg)