Acked-by: Julia Lawall <julia.law...@lip6.fr> On Tue, 28 Oct 2014, Wolfram Sang wrote:
> There are calls which silently set the owner of a module. This is the > preferred way [1], so avoid setting it manually. Currently, we only care > about platform drivers, but there might be more calls to be added later. > > [1] https://lkml.org/lkml/2014/10/12/87 > > Signed-off-by: Wolfram Sang <w...@the-dreams.de> > --- > scripts/coccinelle/api/platform_no_drv_owner.cocci | 106 > +++++++++++++++++++++ > 1 file changed, 106 insertions(+) > create mode 100644 scripts/coccinelle/api/platform_no_drv_owner.cocci > > diff --git a/scripts/coccinelle/api/platform_no_drv_owner.cocci > b/scripts/coccinelle/api/platform_no_drv_owner.cocci > new file mode 100644 > index 000000000000..e065b9e714fc > --- /dev/null > +++ b/scripts/coccinelle/api/platform_no_drv_owner.cocci > @@ -0,0 +1,106 @@ > +/// Remove .owner field if calls are used which set it automatically > +/// > +// Confidence: High > +// Copyright: (C) 2014 Wolfram Sang. GPL v2. > + > +virtual patch > +virtual context > +virtual org > +virtual report > + > +@match1@ > +declarer name module_platform_driver; > +declarer name module_platform_driver_probe; > +identifier __driver; > +@@ > +( > + module_platform_driver(__driver); > +| > + module_platform_driver_probe(__driver, ...); > +) > + > +@fix1 depends on match1 && patch && !context && !org && !report@ > +identifier match1.__driver; > +@@ > + static struct platform_driver __driver = { > + .driver = { > +- .owner = THIS_MODULE, > + } > + }; > + > +@match2@ > +identifier __driver; > +@@ > +( > + platform_driver_register(&__driver) > +| > + platform_driver_probe(&__driver, ...) > +| > + platform_create_bundle(&__driver, ...) > +) > + > +@fix2 depends on match2 && patch && !context && !org && !report@ > +identifier match2.__driver; > +@@ > + static struct platform_driver __driver = { > + .driver = { > +- .owner = THIS_MODULE, > + } > + }; > + > +// > ---------------------------------------------------------------------------- > + > +@fix1_context depends on match1 && !patch && (context || org || report)@ > +identifier match1.__driver; > +position j0; > +@@ > + > + static struct platform_driver __driver = { > + .driver = { > +* .owner@j0 = THIS_MODULE, > + } > + }; > + > +@fix2_context depends on match2 && !patch && (context || org || report)@ > +identifier match2.__driver; > +position j0; > +@@ > + > + static struct platform_driver __driver = { > + .driver = { > +* .owner@j0 = THIS_MODULE, > + } > + }; > + > +// > ---------------------------------------------------------------------------- > + > +@script:python fix1_org depends on org@ > +j0 << fix1_context.j0; > +@@ > + > +msg = "No need to set .owner here. The core will do it." > +coccilib.org.print_todo(j0[0], msg) > + > +@script:python fix2_org depends on org@ > +j0 << fix2_context.j0; > +@@ > + > +msg = "No need to set .owner here. The core will do it." > +coccilib.org.print_todo(j0[0], msg) > + > +// > ---------------------------------------------------------------------------- > + > +@script:python fix1_report depends on report@ > +j0 << fix1_context.j0; > +@@ > + > +msg = "No need to set .owner here. The core will do it." > +coccilib.report.print_report(j0[0], msg) > + > +@script:python fix2_report depends on report@ > +j0 << fix2_context.j0; > +@@ > + > +msg = "No need to set .owner here. The core will do it." > +coccilib.report.print_report(j0[0], msg) > + > -- > 2.0.0 > > -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/