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