All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] platform/x86: huawei-wmi: Fix misuse of strcmp() function
@ 2019-10-15 18:25 Gustavo A. R. Silva
  2019-10-15 19:08 ` ayman.bagabas
  0 siblings, 1 reply; 3+ messages in thread
From: Gustavo A. R. Silva @ 2019-10-15 18:25 UTC (permalink / raw)
  To: Darren Hart, Andy Shevchenko, Ayman Bagabas
  Cc: platform-driver-x86, linux-kernel, Gustavo A. R. Silva

Comparing the result of strcmp directly with 1 may cause it to be
misinterpreted. Note that strcmp may return an integer besides -1,
0, or 1.

Fix this by returning -ENODEV only when strcmp() returns a value
other than 0.

Addresses-Coverity-ID: 1487035 ("Misuse of memcmp-style function")
Fixes: b7527d0f4502 ("platform/x86: huawei-wmi: Add battery charging thresholds")
Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
---
 drivers/platform/x86/huawei-wmi.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/platform/x86/huawei-wmi.c b/drivers/platform/x86/huawei-wmi.c
index 6720f78c60c2..b43f76acbfea 100644
--- a/drivers/platform/x86/huawei-wmi.c
+++ b/drivers/platform/x86/huawei-wmi.c
@@ -470,7 +470,7 @@ static DEVICE_ATTR_RW(charge_control_thresholds);
 static int huawei_wmi_battery_add(struct power_supply *battery)
 {
 	/* Huawei laptops come with one battery only */
-	if (strcmp(battery->desc->name, "BAT") != 1)
+	if (strcmp(battery->desc->name, "BAT"))
 		return -ENODEV;
 
 	device_create_file(&battery->dev, &dev_attr_charge_control_start_threshold);
-- 
2.23.0


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH] platform/x86: huawei-wmi: Fix misuse of strcmp() function
  2019-10-15 18:25 [PATCH] platform/x86: huawei-wmi: Fix misuse of strcmp() function Gustavo A. R. Silva
@ 2019-10-15 19:08 ` ayman.bagabas
  2019-10-15 19:26   ` Gustavo A. R. Silva
  0 siblings, 1 reply; 3+ messages in thread
From: ayman.bagabas @ 2019-10-15 19:08 UTC (permalink / raw)
  To: Gustavo A. R. Silva, Darren Hart, Andy Shevchenko
  Cc: platform-driver-x86, linux-kernel

Hi Gustavo,

On Tue, 2019-10-15 at 13:25 -0500, Gustavo A. R. Silva wrote:
> Comparing the result of strcmp directly with 1 may cause it to be
> misinterpreted. Note that strcmp may return an integer besides -1,
> 0, or 1.
> 
> Fix this by returning -ENODEV only when strcmp() returns a value
> other than 0.
> 
> Addresses-Coverity-ID: 1487035 ("Misuse of memcmp-style function")
> Fixes: b7527d0f4502 ("platform/x86: huawei-wmi: Add battery charging
> thresholds")
> Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
> ---
>  drivers/platform/x86/huawei-wmi.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/platform/x86/huawei-wmi.c
> b/drivers/platform/x86/huawei-wmi.c
> index 6720f78c60c2..b43f76acbfea 100644
> --- a/drivers/platform/x86/huawei-wmi.c
> +++ b/drivers/platform/x86/huawei-wmi.c
> @@ -470,7 +470,7 @@ static DEVICE_ATTR_RW(charge_control_thresholds);
>  static int huawei_wmi_battery_add(struct power_supply *battery)
>  {
>  	/* Huawei laptops come with one battery only */
> -	if (strcmp(battery->desc->name, "BAT") != 1)

Note we don't have a battery number in BATx, strcmp would return 1 if
battery->desc->name is "BAT0" or any one digit. This is a desired
behavior where some Huawei laptops identify the first battery as "BAT1"
and this would match if name is greater than "BAT" by one digit.

Maybe strcmp(battery->desc->name, "BAT") < 0 is a better way to go.

> +	if (strcmp(battery->desc->name, "BAT"))
>  		return -ENODEV;

Now this would always return ENODEV.

Thank you,
Ayman

>  
>  	device_create_file(&battery->dev,
> &dev_attr_charge_control_start_threshold);


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] platform/x86: huawei-wmi: Fix misuse of strcmp() function
  2019-10-15 19:08 ` ayman.bagabas
@ 2019-10-15 19:26   ` Gustavo A. R. Silva
  0 siblings, 0 replies; 3+ messages in thread
From: Gustavo A. R. Silva @ 2019-10-15 19:26 UTC (permalink / raw)
  To: ayman.bagabas, Darren Hart, Andy Shevchenko
  Cc: platform-driver-x86, linux-kernel

Hi Ayman,

On 10/15/19 14:08, ayman.bagabas@gmail.com wrote:

>>  	/* Huawei laptops come with one battery only */
>> -	if (strcmp(battery->desc->name, "BAT") != 1)
> 
> Note we don't have a battery number in BATx, strcmp would return 1 if
> battery->desc->name is "BAT0" or any one digit. This is a desired
> behavior where some Huawei laptops identify the first battery as "BAT1"
> and this would match if name is greater than "BAT" by one digit.
> 

Great to know this is not a bug. I don't think there is any
other instance in the whole codebase like this one: strcmp(...) != 1
So, that's an odd thing to see...  Maybe you can consider adding
the whole description above as a code comment? :)

> Maybe strcmp(battery->desc->name, "BAT") < 0 is a better way to go.
> 

Yeah; this is bit more specific.

Thanks!
--
Gustavo

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2019-10-15 19:51 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-10-15 18:25 [PATCH] platform/x86: huawei-wmi: Fix misuse of strcmp() function Gustavo A. R. Silva
2019-10-15 19:08 ` ayman.bagabas
2019-10-15 19:26   ` Gustavo A. R. Silva

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.