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 7virtual patch 8virtual context 9virtual org 10virtual report 11 12@match1@ 13declarer name module_i2c_driver; 14declarer name module_platform_driver; 15declarer name module_platform_driver_probe; 16identifier __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@ 27identifier 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@ 36identifier match1.__driver; 37@@ 38 static struct i2c_driver __driver = { 39 .driver = { 40- .owner = THIS_MODULE, 41 } 42 }; 43 44@match2@ 45identifier __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@ 58identifier 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@ 67identifier 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)@ 78identifier match1.__driver; 79position 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)@ 89identifier match1.__driver; 90position 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)@ 100identifier match2.__driver; 101position 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)@ 111identifier match2.__driver; 112position 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@ 124j0 << fix1_context.j0; 125@@ 126 127msg = "No need to set .owner here. The core will do it." 128coccilib.org.print_todo(j0[0], msg) 129 130@script:python fix1_i2c_org depends on org@ 131j0 << fix1_i2c_context.j0; 132@@ 133 134msg = "No need to set .owner here. The core will do it." 135coccilib.org.print_todo(j0[0], msg) 136 137@script:python fix2_org depends on org@ 138j0 << fix2_context.j0; 139@@ 140 141msg = "No need to set .owner here. The core will do it." 142coccilib.org.print_todo(j0[0], msg) 143 144@script:python fix2_i2c_org depends on org@ 145j0 << fix2_i2c_context.j0; 146@@ 147 148msg = "No need to set .owner here. The core will do it." 149coccilib.org.print_todo(j0[0], msg) 150 151// ---------------------------------------------------------------------------- 152 153@script:python fix1_report depends on report@ 154j0 << fix1_context.j0; 155@@ 156 157msg = "No need to set .owner here. The core will do it." 158coccilib.report.print_report(j0[0], msg) 159 160@script:python fix1_i2c_report depends on report@ 161j0 << fix1_i2c_context.j0; 162@@ 163 164msg = "No need to set .owner here. The core will do it." 165coccilib.report.print_report(j0[0], msg) 166 167@script:python fix2_report depends on report@ 168j0 << fix2_context.j0; 169@@ 170 171msg = "No need to set .owner here. The core will do it." 172coccilib.report.print_report(j0[0], msg) 173 174@script:python fix2_i2c_report depends on report@ 175j0 << fix2_i2c_context.j0; 176@@ 177 178msg = "No need to set .owner here. The core will do it." 179coccilib.report.print_report(j0[0], msg) 180 181