2015-07-07 06:54:04

by Vaishali Thakkar

[permalink] [raw]
Subject: [PATCH] w1: Use module_pci_driver

Use module_pci_driver for drivers whose init and exit functions
only register and unregister, respectively.

A simplified version of the Coccinelle semantic patch that performs
this transformation is as follows:

@a@
identifier f, x;
@@
-static f(...) { return pci_register_driver(&x); }

@b depends on a@
identifier e, a.x;
@@
-static e(...) { pci_unregister_driver(&x); }

@c depends on a && b@
identifier a.f;
declarer name module_init;
@@
-module_init(f);

@d depends on a && b && c@
identifier b.e, a.x;
declarer name module_exit;
declarer name module_pci_driver;
@@
-module_exit(e);
+module_pci_driver(x);

Signed-off-by: Vaishali Thakkar <[email protected]>
---
drivers/w1/masters/matrox_w1.c | 14 +-------------
1 file changed, 1 insertion(+), 13 deletions(-)

diff --git a/drivers/w1/masters/matrox_w1.c b/drivers/w1/masters/matrox_w1.c
index d8667b0..684bc9d 100644
--- a/drivers/w1/masters/matrox_w1.c
+++ b/drivers/w1/masters/matrox_w1.c
@@ -232,16 +232,4 @@ static void matrox_w1_remove(struct pci_dev *pdev)
}
kfree(dev);
}
-
-static int __init matrox_w1_init(void)
-{
- return pci_register_driver(&matrox_w1_pci_driver);
-}
-
-static void __exit matrox_w1_fini(void)
-{
- pci_unregister_driver(&matrox_w1_pci_driver);
-}
-
-module_init(matrox_w1_init);
-module_exit(matrox_w1_fini);
+module_pci_driver(matrox_w1_pci_driver);
--
1.9.1


2015-07-11 14:50:41

by Evgeniy Polyakov

[permalink] [raw]
Subject: Re: [PATCH] w1: Use module_pci_driver

Hi everyone

Patch looks good to me, thank you
Greg, please pull it into your tree

Acked-by: Evgeniy Polyakov <[email protected]>

07.07.2015, 09:55, "Vaishali Thakkar" <[email protected]>:
> Use module_pci_driver for drivers whose init and exit functions
> only register and unregister, respectively.

> Signed-off-by: Vaishali Thakkar <[email protected]>
> ---
> ?drivers/w1/masters/matrox_w1.c | 14 +-------------
> ?1 file changed, 1 insertion(+), 13 deletions(-)
>
> diff --git a/drivers/w1/masters/matrox_w1.c b/drivers/w1/masters/matrox_w1.c
> index d8667b0..684bc9d 100644
> --- a/drivers/w1/masters/matrox_w1.c
> +++ b/drivers/w1/masters/matrox_w1.c
> @@ -232,16 +232,4 @@ static void matrox_w1_remove(struct pci_dev *pdev)
> ?????????}
> ?????????kfree(dev);
> ?}
> -
> -static int __init matrox_w1_init(void)
> -{
> - return pci_register_driver(&matrox_w1_pci_driver);
> -}
> -
> -static void __exit matrox_w1_fini(void)
> -{
> - pci_unregister_driver(&matrox_w1_pci_driver);
> -}
> -
> -module_init(matrox_w1_init);
> -module_exit(matrox_w1_fini);
> +module_pci_driver(matrox_w1_pci_driver);