diff mbox series

[3/3] power: supply: Constify static w1_family_ops structs

Message ID 20201004193202.4044-4-rikard.falkeborn@gmail.com
State New
Headers show
Series w1: Constify w1_family_ops | expand

Commit Message

Rikard Falkeborn Oct. 4, 2020, 7:32 p.m. UTC
The only usage of these structs is to assign their address to the fops
field in the w1_family struct, which is a const pointer. Make them const
to allow the compiler to put them in read-only memory.

This was done with the following Coccinelle semantic patch
(http://coccinelle.lip6.fr/):

// <smpl>
@r1 disable optional_qualifier @
identifier i;
position p;
@@
static struct w1_family_ops i@p = {...};

@ok1@
identifier r1.i;
position p;
identifier s;
@@
static struct w1_family s = {
	.fops=&i@p,
};

@bad1@
position p!={r1.p,ok1.p};
identifier r1.i;
@@
i@p

@depends on !bad1 disable optional_qualifier@
identifier r1.i;
@@
static
+const
struct w1_family_ops i={};
// </smpl>

Signed-off-by: Rikard Falkeborn <rikard.falkeborn@gmail.com>
---
 drivers/power/supply/bq27xxx_battery_hdq.c | 2 +-
 drivers/power/supply/ds2760_battery.c      | 2 +-
 drivers/power/supply/max1721x_battery.c    | 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)

Comments

Sebastian Reichel Oct. 4, 2020, 10:03 p.m. UTC | #1
Hi,

On Sun, Oct 04, 2020 at 09:32:02PM +0200, Rikard Falkeborn wrote:
> The only usage of these structs is to assign their address to the fops

> field in the w1_family struct, which is a const pointer. Make them const

> to allow the compiler to put them in read-only memory.

> 

> This was done with the following Coccinelle semantic patch

> (http://coccinelle.lip6.fr/):

> 

> // <smpl>

> @r1 disable optional_qualifier @

> identifier i;

> position p;

> @@

> static struct w1_family_ops i@p = {...};

> 

> @ok1@

> identifier r1.i;

> position p;

> identifier s;

> @@

> static struct w1_family s = {

> 	.fops=&i@p,

> };

> 

> @bad1@

> position p!={r1.p,ok1.p};

> identifier r1.i;

> @@

> i@p

> 

> @depends on !bad1 disable optional_qualifier@

> identifier r1.i;

> @@

> static

> +const

> struct w1_family_ops i={};

> // </smpl>

> 

> Signed-off-by: Rikard Falkeborn <rikard.falkeborn@gmail.com>

> ---


I suggest that this simply goes through the w1 tree together
with the other patches:

Acked-by: Sebastian Reichel <sre@kernel.org>


-- Sebastian

>  drivers/power/supply/bq27xxx_battery_hdq.c | 2 +-

>  drivers/power/supply/ds2760_battery.c      | 2 +-

>  drivers/power/supply/max1721x_battery.c    | 2 +-

>  3 files changed, 3 insertions(+), 3 deletions(-)

> 

> diff --git a/drivers/power/supply/bq27xxx_battery_hdq.c b/drivers/power/supply/bq27xxx_battery_hdq.c

> index 12b10dad77d3..922759ab2e04 100644

> --- a/drivers/power/supply/bq27xxx_battery_hdq.c

> +++ b/drivers/power/supply/bq27xxx_battery_hdq.c

> @@ -97,7 +97,7 @@ static void bq27xxx_battery_hdq_remove_slave(struct w1_slave *sl)

>  	bq27xxx_battery_teardown(di);

>  }

>  

> -static struct w1_family_ops bq27xxx_battery_hdq_fops = {

> +static const struct w1_family_ops bq27xxx_battery_hdq_fops = {

>  	.add_slave	= bq27xxx_battery_hdq_add_slave,

>  	.remove_slave	= bq27xxx_battery_hdq_remove_slave,

>  };

> diff --git a/drivers/power/supply/ds2760_battery.c b/drivers/power/supply/ds2760_battery.c

> index 11bed88a89fa..695bb6747400 100644

> --- a/drivers/power/supply/ds2760_battery.c

> +++ b/drivers/power/supply/ds2760_battery.c

> @@ -795,7 +795,7 @@ static const struct of_device_id w1_ds2760_of_ids[] = {

>  };

>  #endif

>  

> -static struct w1_family_ops w1_ds2760_fops = {

> +static const struct w1_family_ops w1_ds2760_fops = {

>  	.add_slave	= w1_ds2760_add_slave,

>  	.remove_slave	= w1_ds2760_remove_slave,

>  	.groups		= w1_ds2760_groups,

> diff --git a/drivers/power/supply/max1721x_battery.c b/drivers/power/supply/max1721x_battery.c

> index 9ca895b0dabb..1b1a36f8e929 100644

> --- a/drivers/power/supply/max1721x_battery.c

> +++ b/drivers/power/supply/max1721x_battery.c

> @@ -431,7 +431,7 @@ static int devm_w1_max1721x_add_device(struct w1_slave *sl)

>  	return 0;

>  }

>  

> -static struct w1_family_ops w1_max1721x_fops = {

> +static const struct w1_family_ops w1_max1721x_fops = {

>  	.add_slave = devm_w1_max1721x_add_device,

>  };

>  

> -- 

> 2.28.0

>
diff mbox series

Patch

diff --git a/drivers/power/supply/bq27xxx_battery_hdq.c b/drivers/power/supply/bq27xxx_battery_hdq.c
index 12b10dad77d3..922759ab2e04 100644
--- a/drivers/power/supply/bq27xxx_battery_hdq.c
+++ b/drivers/power/supply/bq27xxx_battery_hdq.c
@@ -97,7 +97,7 @@  static void bq27xxx_battery_hdq_remove_slave(struct w1_slave *sl)
 	bq27xxx_battery_teardown(di);
 }
 
-static struct w1_family_ops bq27xxx_battery_hdq_fops = {
+static const struct w1_family_ops bq27xxx_battery_hdq_fops = {
 	.add_slave	= bq27xxx_battery_hdq_add_slave,
 	.remove_slave	= bq27xxx_battery_hdq_remove_slave,
 };
diff --git a/drivers/power/supply/ds2760_battery.c b/drivers/power/supply/ds2760_battery.c
index 11bed88a89fa..695bb6747400 100644
--- a/drivers/power/supply/ds2760_battery.c
+++ b/drivers/power/supply/ds2760_battery.c
@@ -795,7 +795,7 @@  static const struct of_device_id w1_ds2760_of_ids[] = {
 };
 #endif
 
-static struct w1_family_ops w1_ds2760_fops = {
+static const struct w1_family_ops w1_ds2760_fops = {
 	.add_slave	= w1_ds2760_add_slave,
 	.remove_slave	= w1_ds2760_remove_slave,
 	.groups		= w1_ds2760_groups,
diff --git a/drivers/power/supply/max1721x_battery.c b/drivers/power/supply/max1721x_battery.c
index 9ca895b0dabb..1b1a36f8e929 100644
--- a/drivers/power/supply/max1721x_battery.c
+++ b/drivers/power/supply/max1721x_battery.c
@@ -431,7 +431,7 @@  static int devm_w1_max1721x_add_device(struct w1_slave *sl)
 	return 0;
 }
 
-static struct w1_family_ops w1_max1721x_fops = {
+static const struct w1_family_ops w1_max1721x_fops = {
 	.add_slave = devm_w1_max1721x_add_device,
 };