2020-08-21 22:27:49

by Nathan Chancellor

[permalink] [raw]
Subject: [PATCH] net: dsa: sja1105: Do not use address of compatible member in sja1105_check_device_id

Clang warns:

drivers/net/dsa/sja1105/sja1105_main.c:3418:38: warning: address of
array 'match->compatible' will always evaluate to 'true'
[-Wpointer-bool-conversion]
for (match = sja1105_dt_ids; match->compatible; match++) {
~~~ ~~~~~~~^~~~~~~~~~
1 warning generated.

We should check the value of the first character in compatible to see if
it is empty or not. This matches how the rest of the tree iterates over
IDs.

Fixes: 0b0e299720bb ("net: dsa: sja1105: use detected device id instead of DT one on mismatch")
Link: https://github.com/ClangBuiltLinux/linux/issues/1139
Signed-off-by: Nathan Chancellor <[email protected]>
---
drivers/net/dsa/sja1105/sja1105_main.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/dsa/sja1105/sja1105_main.c b/drivers/net/dsa/sja1105/sja1105_main.c
index c3f6f124e5f0..5a28dfb36ec3 100644
--- a/drivers/net/dsa/sja1105/sja1105_main.c
+++ b/drivers/net/dsa/sja1105/sja1105_main.c
@@ -3415,7 +3415,7 @@ static int sja1105_check_device_id(struct sja1105_private *priv)

sja1105_unpack(prod_id, &part_no, 19, 4, SJA1105_SIZE_DEVICE_ID);

- for (match = sja1105_dt_ids; match->compatible; match++) {
+ for (match = sja1105_dt_ids; match->compatible[0]; match++) {
const struct sja1105_info *info = match->data;

/* Is what's been probed in our match table at all? */

base-commit: 4af7b32f84aa4cd60e39b355bc8a1eab6cd8d8a4
--
2.28.0


2020-08-21 22:35:14

by Florian Fainelli

[permalink] [raw]
Subject: Re: [PATCH] net: dsa: sja1105: Do not use address of compatible member in sja1105_check_device_id

On 8/21/20 3:25 PM, Nathan Chancellor wrote:
> Clang warns:
>
> drivers/net/dsa/sja1105/sja1105_main.c:3418:38: warning: address of
> array 'match->compatible' will always evaluate to 'true'
> [-Wpointer-bool-conversion]
> for (match = sja1105_dt_ids; match->compatible; match++) {
> ~~~ ~~~~~~~^~~~~~~~~~
> 1 warning generated.
>
> We should check the value of the first character in compatible to see if
> it is empty or not. This matches how the rest of the tree iterates over
> IDs.
>
> Fixes: 0b0e299720bb ("net: dsa: sja1105: use detected device id instead of DT one on mismatch")
> Link: https://github.com/ClangBuiltLinux/linux/issues/1139
> Signed-off-by: Nathan Chancellor <[email protected]>

Acked-by: Florian Fainelli <[email protected]>
--
Florian

2020-08-21 22:59:37

by Vladimir Oltean

[permalink] [raw]
Subject: Re: [PATCH] net: dsa: sja1105: Do not use address of compatible member in sja1105_check_device_id

On Fri, Aug 21, 2020 at 03:25:16PM -0700, Nathan Chancellor wrote:
> Clang warns:
>
> drivers/net/dsa/sja1105/sja1105_main.c:3418:38: warning: address of
> array 'match->compatible' will always evaluate to 'true'
> [-Wpointer-bool-conversion]
> for (match = sja1105_dt_ids; match->compatible; match++) {
> ~~~ ~~~~~~~^~~~~~~~~~
> 1 warning generated.
>
> We should check the value of the first character in compatible to see if
> it is empty or not. This matches how the rest of the tree iterates over
> IDs.
>
> Fixes: 0b0e299720bb ("net: dsa: sja1105: use detected device id instead of DT one on mismatch")
> Link: https://github.com/ClangBuiltLinux/linux/issues/1139
> Signed-off-by: Nathan Chancellor <[email protected]>
> ---
> drivers/net/dsa/sja1105/sja1105_main.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/net/dsa/sja1105/sja1105_main.c b/drivers/net/dsa/sja1105/sja1105_main.c
> index c3f6f124e5f0..5a28dfb36ec3 100644
> --- a/drivers/net/dsa/sja1105/sja1105_main.c
> +++ b/drivers/net/dsa/sja1105/sja1105_main.c
> @@ -3415,7 +3415,7 @@ static int sja1105_check_device_id(struct sja1105_private *priv)
>
> sja1105_unpack(prod_id, &part_no, 19, 4, SJA1105_SIZE_DEVICE_ID);
>
> - for (match = sja1105_dt_ids; match->compatible; match++) {
> + for (match = sja1105_dt_ids; match->compatible[0]; match++) {
> const struct sja1105_info *info = match->data;
>
> /* Is what's been probed in our match table at all? */
>
> base-commit: 4af7b32f84aa4cd60e39b355bc8a1eab6cd8d8a4
> --
> 2.28.0
>

Thanks, Nathan.

Acked-by: Vladimir Oltean <[email protected]>

-Vladimir

2020-08-24 23:16:29

by David Miller

[permalink] [raw]
Subject: Re: [PATCH] net: dsa: sja1105: Do not use address of compatible member in sja1105_check_device_id

From: Nathan Chancellor <[email protected]>
Date: Fri, 21 Aug 2020 15:25:16 -0700

> Clang warns:
>
> drivers/net/dsa/sja1105/sja1105_main.c:3418:38: warning: address of
> array 'match->compatible' will always evaluate to 'true'
> [-Wpointer-bool-conversion]
> for (match = sja1105_dt_ids; match->compatible; match++) {
> ~~~ ~~~~~~~^~~~~~~~~~
> 1 warning generated.
>
> We should check the value of the first character in compatible to see if
> it is empty or not. This matches how the rest of the tree iterates over
> IDs.
>
> Fixes: 0b0e299720bb ("net: dsa: sja1105: use detected device id instead of DT one on mismatch")
> Link: https://github.com/ClangBuiltLinux/linux/issues/1139
> Signed-off-by: Nathan Chancellor <[email protected]>

Applied, thanks.