These changes are the raw update to linux-4.4.6-rt14. Kernel sources
[kvmfornfv.git] / kernel / scripts / coccinelle / api / platform_no_drv_owner.cocci
1 /// Remove .owner field if calls are used which set it automatically
2 ///
3 // Confidence: High
4 // Copyright: (C) 2014 Wolfram Sang. GPL v2.
5
6 virtual patch
7 virtual context
8 virtual org
9 virtual report
10
11 @match1@
12 declarer name module_i2c_driver;
13 declarer name module_platform_driver;
14 declarer name module_platform_driver_probe;
15 identifier __driver;
16 @@
17 (
18         module_i2c_driver(__driver);
19 |
20         module_platform_driver(__driver);
21 |
22         module_platform_driver_probe(__driver, ...);
23 )
24
25 @fix1 depends on match1 && patch && !context && !org && !report@
26 identifier match1.__driver;
27 @@
28         static struct platform_driver __driver = {
29                 .driver = {
30 -                       .owner = THIS_MODULE,
31                 }
32         };
33
34 @fix1_i2c depends on match1 && patch && !context && !org && !report@
35 identifier match1.__driver;
36 @@
37         static struct i2c_driver __driver = {
38                 .driver = {
39 -                       .owner = THIS_MODULE,
40                 }
41         };
42
43 @match2@
44 identifier __driver;
45 @@
46 (
47         platform_driver_register(&__driver)
48 |
49         platform_driver_probe(&__driver, ...)
50 |
51         platform_create_bundle(&__driver, ...)
52 |
53         i2c_add_driver(&__driver)
54 )
55
56 @fix2 depends on match2 && patch && !context && !org && !report@
57 identifier match2.__driver;
58 @@
59         static struct platform_driver __driver = {
60                 .driver = {
61 -                       .owner = THIS_MODULE,
62                 }
63         };
64
65 @fix2_i2c depends on match2 && patch && !context && !org && !report@
66 identifier match2.__driver;
67 @@
68         static struct i2c_driver __driver = {
69                 .driver = {
70 -                       .owner = THIS_MODULE,
71                 }
72         };
73
74 // ----------------------------------------------------------------------------
75
76 @fix1_context depends on match1 && !patch && (context || org || report)@
77 identifier match1.__driver;
78 position j0;
79 @@
80
81         static struct platform_driver __driver = {
82                 .driver = {
83 *                       .owner@j0 = THIS_MODULE,
84                 }
85         };
86
87 @fix1_i2c_context depends on match1 && !patch && (context || org || report)@
88 identifier match1.__driver;
89 position j0;
90 @@
91
92         static struct i2c_driver __driver = {
93                 .driver = {
94 *                       .owner@j0 = THIS_MODULE,
95                 }
96         };
97
98 @fix2_context depends on match2 && !patch && (context || org || report)@
99 identifier match2.__driver;
100 position j0;
101 @@
102
103         static struct platform_driver __driver = {
104                 .driver = {
105 *                       .owner@j0 = THIS_MODULE,
106                 }
107         };
108
109 @fix2_i2c_context depends on match2 && !patch && (context || org || report)@
110 identifier match2.__driver;
111 position j0;
112 @@
113
114         static struct i2c_driver __driver = {
115                 .driver = {
116 *                       .owner@j0 = THIS_MODULE,
117                 }
118         };
119
120 // ----------------------------------------------------------------------------
121
122 @script:python fix1_org depends on org@
123 j0 << fix1_context.j0;
124 @@
125
126 msg = "No need to set .owner here. The core will do it."
127 coccilib.org.print_todo(j0[0], msg)
128
129 @script:python fix1_i2c_org depends on org@
130 j0 << fix1_i2c_context.j0;
131 @@
132
133 msg = "No need to set .owner here. The core will do it."
134 coccilib.org.print_todo(j0[0], msg)
135
136 @script:python fix2_org depends on org@
137 j0 << fix2_context.j0;
138 @@
139
140 msg = "No need to set .owner here. The core will do it."
141 coccilib.org.print_todo(j0[0], msg)
142
143 @script:python fix2_i2c_org depends on org@
144 j0 << fix2_i2c_context.j0;
145 @@
146
147 msg = "No need to set .owner here. The core will do it."
148 coccilib.org.print_todo(j0[0], msg)
149
150 // ----------------------------------------------------------------------------
151
152 @script:python fix1_report depends on report@
153 j0 << fix1_context.j0;
154 @@
155
156 msg = "No need to set .owner here. The core will do it."
157 coccilib.report.print_report(j0[0], msg)
158
159 @script:python fix1_i2c_report depends on report@
160 j0 << fix1_i2c_context.j0;
161 @@
162
163 msg = "No need to set .owner here. The core will do it."
164 coccilib.report.print_report(j0[0], msg)
165
166 @script:python fix2_report depends on report@
167 j0 << fix2_context.j0;
168 @@
169
170 msg = "No need to set .owner here. The core will do it."
171 coccilib.report.print_report(j0[0], msg)
172
173 @script:python fix2_i2c_report depends on report@
174 j0 << fix2_i2c_context.j0;
175 @@
176
177 msg = "No need to set .owner here. The core will do it."
178 coccilib.report.print_report(j0[0], msg)
179