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