lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <20210927144821.c6rzox4xyqkanzgz@earth.universe>
Date:   Mon, 27 Sep 2021 16:48:21 +0200
From:   Sebastian Reichel <sebastian.reichel@...labora.com>
To:     Matthias Kaehlcke <mka@...omium.org>
Cc:     linux-pm@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH] power: supply: core: Add psy_has_property()

Hi,

On Wed, Sep 01, 2021 at 04:59:36PM -0700, Matthias Kaehlcke wrote:
> Add the helper psy_has_property() to check whether a power supply
> has a given property and use it instead of ad hoc iterations over
> the property list in multiple locations.
> 
> Signed-off-by: Matthias Kaehlcke <mka@...omium.org>
> ---

Thanks, queued.

-- Sebastian

> 
>  drivers/power/supply/power_supply_core.c | 65 ++++++++++++++----------
>  1 file changed, 37 insertions(+), 28 deletions(-)
> 
> diff --git a/drivers/power/supply/power_supply_core.c b/drivers/power/supply/power_supply_core.c
> index d99e2f11c183..9309b33ed3ec 100644
> --- a/drivers/power/supply/power_supply_core.c
> +++ b/drivers/power/supply/power_supply_core.c
> @@ -956,26 +956,41 @@ static struct thermal_zone_device_ops psy_tzd_ops = {
>  	.get_temp = power_supply_read_temp,
>  };
>  
> +static bool psy_has_property(const struct power_supply_desc *psy_desc,
> +			     enum power_supply_property psp)
> +{
> +	bool found = false;
> +	int i;
> +
> +	for (i = 0; i < psy_desc->num_properties; i++) {
> +		if (psy_desc->properties[i] == psp) {
> +			found = true;
> +			break;
> +		}
> +	}
> +
> +	return found;
> +}
> +
>  static int psy_register_thermal(struct power_supply *psy)
>  {
> -	int i, ret;
> +	int ret;
>  
>  	if (psy->desc->no_thermal)
>  		return 0;
>  
>  	/* Register battery zone device psy reports temperature */
> -	for (i = 0; i < psy->desc->num_properties; i++) {
> -		if (psy->desc->properties[i] == POWER_SUPPLY_PROP_TEMP) {
> -			psy->tzd = thermal_zone_device_register(psy->desc->name,
> -					0, 0, psy, &psy_tzd_ops, NULL, 0, 0);
> -			if (IS_ERR(psy->tzd))
> -				return PTR_ERR(psy->tzd);
> -			ret = thermal_zone_device_enable(psy->tzd);
> -			if (ret)
> -				thermal_zone_device_unregister(psy->tzd);
> -			return ret;
> -		}
> +	if (psy_has_property(psy->desc, POWER_SUPPLY_PROP_TEMP)) {
> +		psy->tzd = thermal_zone_device_register(psy->desc->name,
> +				0, 0, psy, &psy_tzd_ops, NULL, 0, 0);
> +		if (IS_ERR(psy->tzd))
> +			return PTR_ERR(psy->tzd);
> +		ret = thermal_zone_device_enable(psy->tzd);
> +		if (ret)
> +			thermal_zone_device_unregister(psy->tzd);
> +		return ret;
>  	}
> +
>  	return 0;
>  }
>  
> @@ -1046,18 +1061,14 @@ static const struct thermal_cooling_device_ops psy_tcd_ops = {
>  
>  static int psy_register_cooler(struct power_supply *psy)
>  {
> -	int i;
> -
>  	/* Register for cooling device if psy can control charging */
> -	for (i = 0; i < psy->desc->num_properties; i++) {
> -		if (psy->desc->properties[i] ==
> -				POWER_SUPPLY_PROP_CHARGE_CONTROL_LIMIT) {
> -			psy->tcd = thermal_cooling_device_register(
> -							(char *)psy->desc->name,
> -							psy, &psy_tcd_ops);
> -			return PTR_ERR_OR_ZERO(psy->tcd);
> -		}
> +	if (psy_has_property(psy->desc, POWER_SUPPLY_PROP_CHARGE_CONTROL_LIMIT)) {
> +		psy->tcd = thermal_cooling_device_register(
> +			(char *)psy->desc->name,
> +			psy, &psy_tcd_ops);
> +		return PTR_ERR_OR_ZERO(psy->tcd);
>  	}
> +
>  	return 0;
>  }
>  
> @@ -1095,7 +1106,7 @@ __power_supply_register(struct device *parent,
>  {
>  	struct device *dev;
>  	struct power_supply *psy;
> -	int i, rc;
> +	int rc;
>  
>  	if (!parent)
>  		pr_warn("%s: Expected proper parent device for '%s'\n",
> @@ -1104,11 +1115,9 @@ __power_supply_register(struct device *parent,
>  	if (!desc || !desc->name || !desc->properties || !desc->num_properties)
>  		return ERR_PTR(-EINVAL);
>  
> -	for (i = 0; i < desc->num_properties; ++i) {
> -		if ((desc->properties[i] == POWER_SUPPLY_PROP_USB_TYPE) &&
> -		    (!desc->usb_types || !desc->num_usb_types))
> -			return ERR_PTR(-EINVAL);
> -	}
> +	if (psy_has_property(desc, POWER_SUPPLY_PROP_USB_TYPE) &&
> +	    (!desc->usb_types || !desc->num_usb_types))
> +		return ERR_PTR(-EINVAL);
>  
>  	psy = kzalloc(sizeof(*psy), GFP_KERNEL);
>  	if (!psy)
> -- 
> 2.33.0.153.gba50c8fa24-goog
> 

Download attachment "signature.asc" of type "application/pgp-signature" (834 bytes)

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ