linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Michał Mirosław" <mirq-linux@rere.qmqm.pl>
To: Andrey Smirnov <andrew.smirnov@gmail.com>,
	Guenter Roeck <linux@roeck-us.net>,
	Sebastian Reichel <sebastian.reichel@collabora.com>
Cc: linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org
Subject: [PATCH v3 03/11] power: generic-adc-battery: fold psy_props[] to private data
Date: Fri, 03 Apr 2020 22:20:31 +0200	[thread overview]
Message-ID: <f44b3baa6349f9e86c0d06a32b5cf63ced727f7c.1585944770.git.mirq-linux@rere.qmqm.pl> (raw)
In-Reply-To: <cover.1585944770.git.mirq-linux@rere.qmqm.pl>

psy_desc->properties will become pointer to const, so we can't use it
for filling the property set. Let's append the list to private data
structure and avoid introducing another variable to temporarily hold
the pointer.

Signed-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl>
Reported-by: kbuild test robot <lkp@intel.com>
---
v3: new patch, required before constification of property lists
---
 drivers/power/supply/generic-adc-battery.c | 30 ++++++++--------------
 1 file changed, 10 insertions(+), 20 deletions(-)

diff --git a/drivers/power/supply/generic-adc-battery.c b/drivers/power/supply/generic-adc-battery.c
index bc462d1ec963..b3b567914dd7 100644
--- a/drivers/power/supply/generic-adc-battery.c
+++ b/drivers/power/supply/generic-adc-battery.c
@@ -52,6 +52,7 @@ struct gab {
 	int	level;
 	int	status;
 	bool cable_plugged;
+	enum power_supply_property	psy_props[];
 };
 
 static struct gab *to_generic_bat(struct power_supply *psy)
@@ -246,7 +247,10 @@ static int gab_probe(struct platform_device *pdev)
 	int index = ARRAY_SIZE(gab_props);
 	bool any = false;
 
-	adc_bat = devm_kzalloc(&pdev->dev, sizeof(*adc_bat), GFP_KERNEL);
+	adc_bat = devm_kzalloc(&pdev->dev,
+		struct_size(adc_bat, psy_props,
+			ARRAY_SIZE(gab_props) + ARRAY_SIZE(gab_chan_name)),
+		GFP_KERNEL);
 	if (!adc_bat) {
 		dev_err(&pdev->dev, "failed to allocate memory\n");
 		return -ENOMEM;
@@ -264,20 +268,8 @@ static int gab_probe(struct platform_device *pdev)
 	psy_desc->external_power_changed = gab_ext_power_changed;
 	adc_bat->pdata = pdata;
 
-	/*
-	 * copying the static properties and allocating extra memory for holding
-	 * the extra configurable properties received from platform data.
-	 */
-	psy_desc->properties = kcalloc(ARRAY_SIZE(gab_props) +
-					ARRAY_SIZE(gab_chan_name),
-					sizeof(*psy_desc->properties),
-					GFP_KERNEL);
-	if (!psy_desc->properties) {
-		ret = -ENOMEM;
-		goto first_mem_fail;
-	}
-
-	memcpy(psy_desc->properties, gab_props, sizeof(gab_props));
+	/* copy static properties */
+	memcpy(adc_bat->psy_props, gab_props, sizeof(gab_props));
 
 	/*
 	 * getting channel from iio and copying the battery properties
@@ -294,12 +286,12 @@ static int gab_probe(struct platform_device *pdev)
 			int index2;
 
 			for (index2 = 0; index2 < index; index2++) {
-				if (psy_desc->properties[index2] ==
+				if (adc_bat->psy_props[index2] ==
 				    gab_dyn_props[chan])
 					break;	/* already known */
 			}
 			if (index2 == index)	/* really new */
-				psy_desc->properties[index++] =
+				adc_bat->psy_props[index++] =
 					gab_dyn_props[chan];
 			any = true;
 		}
@@ -317,6 +309,7 @@ static int gab_probe(struct platform_device *pdev)
 	 * as come channels may be not be supported by the device.So
 	 * we need to take care of that.
 	 */
+	psy_desc->properties = adc_bat->psy_props;
 	psy_desc->num_properties = index;
 
 	adc_bat->psy = power_supply_register(&pdev->dev, psy_desc, &psy_cfg);
@@ -358,8 +351,6 @@ static int gab_probe(struct platform_device *pdev)
 			iio_channel_release(adc_bat->channel[chan]);
 	}
 second_mem_fail:
-	kfree(psy_desc->properties);
-first_mem_fail:
 	return ret;
 }
 
@@ -381,7 +372,6 @@ static int gab_remove(struct platform_device *pdev)
 			iio_channel_release(adc_bat->channel[chan]);
 	}
 
-	kfree(adc_bat->psy_desc.properties);
 	cancel_delayed_work(&adc_bat->bat_work);
 	return 0;
 }
-- 
2.20.1


  parent reply	other threads:[~2020-04-03 20:20 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-04-03 20:20 [PATCH v3 00/11] extensions and fixes Michał Mirosław
2020-04-03 20:20 ` [PATCH v3 01/11] power: charger-manager: remove duplicate assignment Michał Mirosław
2020-04-03 20:20 ` Michał Mirosław [this message]
2020-04-03 20:20 ` [PATCH v3 02/11] power: charger-manager: don't write through desc->properties Michał Mirosław
2020-05-01 12:38   ` Sebastian Reichel
2020-05-01 13:30     ` Michał Mirosław
2020-05-01 13:39       ` [PATCH] power: charger-manager: fix adding of optional properties Michał Mirosław
2020-05-01 13:51         ` Sebastian Reichel
2020-05-01 14:15           ` Michał Mirosław
2020-05-01 14:30           ` [PATCH] power: charger-manager: clarify num_properties starting value Michał Mirosław
2020-05-01 14:58             ` Sebastian Reichel
2020-05-01 13:48       ` [PATCH v3 02/11] power: charger-manager: don't write through desc->properties Sebastian Reichel
2020-04-03 20:20 ` [PATCH v3 05/11] power: supply: core: allow to constify property lists Michał Mirosław
2020-05-01 12:36   ` Sebastian Reichel
2020-04-03 20:20 ` [PATCH v3 04/11] power: supply: core: reduce power_supply_show_usb_type() parameters Michał Mirosław
2020-05-01 12:36   ` Sebastian Reichel
2020-04-03 20:20 ` [PATCH v3 06/11] power: supply: core: fix HWMON temperature labels Michał Mirosław
2020-05-01 12:39   ` Sebastian Reichel
2020-04-03 20:20 ` [PATCH v3 07/11] power: supply: core: tabularize " Michał Mirosław
2020-04-05  1:52   ` kbuild test robot
2020-04-07 18:13     ` Nick Desaulniers
2020-04-07 19:55       ` Michał Mirosław
2020-04-07 19:57         ` Nick Desaulniers
2020-04-07 22:31           ` Nick Desaulniers
2020-04-20  9:22       ` Michał Mirosław
2020-05-01 12:47         ` Sebastian Reichel
2020-04-03 20:20 ` [PATCH v3 08/11] power: supply: core: hide unused HWMON labels Michał Mirosław
2020-05-01 13:22   ` Sebastian Reichel
2020-04-03 20:20 ` [PATCH v3 09/11] power: supply: core: add input voltage/current measurements Michał Mirosław
2020-04-03 20:20 ` [PATCH v3 10/11] power: supply: core: add output voltage measurements Michał Mirosław
2020-04-03 20:20 ` [PATCH v3 11/11] power: supply: core: document measurement points Michał Mirosław

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=f44b3baa6349f9e86c0d06a32b5cf63ced727f7c.1585944770.git.mirq-linux@rere.qmqm.pl \
    --to=mirq-linux@rere.qmqm.pl \
    --cc=andrew.smirnov@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=linux@roeck-us.net \
    --cc=sebastian.reichel@collabora.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).