2021-05-21 20:29:18

by Tom Rix

[permalink] [raw]
Subject: [PATCH] igc: change default return of igc_read_phy_reg()

From: Tom Rix <[email protected]>

Static analysis reports this problem

igc_main.c:4944:20: warning: The left operand of '&'
is a garbage value
if (!(phy_data & SR_1000T_REMOTE_RX_STATUS) &&
~~~~~~~~ ^

pyy_data is set by the call to igc_read_phy_reg() only if
there is a read_reg() op, else it is unset and a 0 is
returned. Change the return to -EOPNOTSUPP.

Fixes: 208983f099d9 ("igc: Add watchdog")
Signed-off-by: Tom Rix <[email protected]>
---
drivers/net/ethernet/intel/igc/igc.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/intel/igc/igc.h b/drivers/net/ethernet/intel/igc/igc.h
index b6d3277c6f520..71100ee7afbee 100644
--- a/drivers/net/ethernet/intel/igc/igc.h
+++ b/drivers/net/ethernet/intel/igc/igc.h
@@ -577,7 +577,7 @@ static inline s32 igc_read_phy_reg(struct igc_hw *hw, u32 offset, u16 *data)
if (hw->phy.ops.read_reg)
return hw->phy.ops.read_reg(hw, offset, data);

- return 0;
+ return -EOPNOTSUPP;
}

void igc_reinit_locked(struct igc_adapter *);
--
2.26.3


2021-05-23 05:50:03

by Sasha Neftin

[permalink] [raw]
Subject: Re: [PATCH] igc: change default return of igc_read_phy_reg()

On 5/21/2021 22:50, [email protected] wrote:
> From: Tom Rix <[email protected]>
>
> Static analysis reports this problem
>
> igc_main.c:4944:20: warning: The left operand of '&'
> is a garbage value
> if (!(phy_data & SR_1000T_REMOTE_RX_STATUS) &&
> ~~~~~~~~ ^
Tom, thanks for this patch. I believe the same static analysis problem
should be with the 'igb_read_phy_reg' method:
https://elixir.bootlin.com/linux/v5.13-rc1/source/drivers/net/ethernet/intel/igb/igb.h#L769
>
> pyy_data is set by the call to igc_read_phy_reg() only if
%s/pyy_data/phy_data/gc (typo)
> there is a read_reg() op, else it is unset and a 0 is
> returned. Change the return to -EOPNOTSUPP.
>
> Fixes: 208983f099d9 ("igc: Add watchdog")
> Signed-off-by: Tom Rix <[email protected]>
> ---
> drivers/net/ethernet/intel/igc/igc.h | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/net/ethernet/intel/igc/igc.h b/drivers/net/ethernet/intel/igc/igc.h
> index b6d3277c6f520..71100ee7afbee 100644
> --- a/drivers/net/ethernet/intel/igc/igc.h
> +++ b/drivers/net/ethernet/intel/igc/igc.h
> @@ -577,7 +577,7 @@ static inline s32 igc_read_phy_reg(struct igc_hw *hw, u32 offset, u16 *data)
> if (hw->phy.ops.read_reg)
> return hw->phy.ops.read_reg(hw, offset, data);
>
> - return 0;
> + return -EOPNOTSUPP;
> }
>
> void igc_reinit_locked(struct igc_adapter *);
>
Thanks,
Sasha

2021-06-24 20:00:48

by Fuxbrumer, Dvora

[permalink] [raw]
Subject: Re: [Intel-wired-lan] [PATCH] igc: change default return of igc_read_phy_reg()

On 5/21/2021 22:50, [email protected] wrote:
> From: Tom Rix <[email protected]>
>
> Static analysis reports this problem
>
> igc_main.c:4944:20: warning: The left operand of '&'
> is a garbage value
> if (!(phy_data & SR_1000T_REMOTE_RX_STATUS) &&
> ~~~~~~~~ ^
>
> pyy_data is set by the call to igc_read_phy_reg() only if
> there is a read_reg() op, else it is unset and a 0 is
> returned. Change the return to -EOPNOTSUPP.
>
> Fixes: 208983f099d9 ("igc: Add watchdog")
> Signed-off-by: Tom Rix <[email protected]>
> ---
> drivers/net/ethernet/intel/igc/igc.h | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
Tested-by: Dvora Fuxbrumer <[email protected]>