Thread (16 messages) 16 messages, 5 authors, 2021-12-09

Re: [PATCH] net: dsa: mv88e6xxx: initialize return variable on declaration

flat view

From: Marek Behún <kabel@kernel.org>
Date: 2021-12-07 13:06:59
Also in: lkml

On Mon, 6 Dec 2021 16:25:10 -0800
Jakub Kicinski [off-list ref] wrote:
On Mon, 6 Dec 2021 23:29:53 +0100 Marek Behún wrote:
quoted
On Mon, 6 Dec 2021 14:21:03 +0100
Andrew Lunn [off-list ref] wrote:
  
quoted
On Mon, Dec 06, 2021 at 04:32:19PM +0500, Ameer Hamza wrote:    
quoted
Uninitialized err variable defined in mv88e6393x_serdes_power
function may cause undefined behaviour if it is called from
mv88e6xxx_serdes_power_down context.

Addresses-Coverity: 1494644 ("Uninitialized scalar variable")

Signed-off-by: Ameer Hamza <redacted>
---
 drivers/net/dsa/mv88e6xxx/serdes.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/dsa/mv88e6xxx/serdes.c b/drivers/net/dsa/mv88e6xxx/serdes.c
index 55273013bfb5..33727439724a 100644
--- a/drivers/net/dsa/mv88e6xxx/serdes.c
+++ b/drivers/net/dsa/mv88e6xxx/serdes.c
@@ -1507,7 +1507,7 @@ int mv88e6393x_serdes_power(struct mv88e6xxx_chip *chip, int port, int lane,
 			    bool on)
 {
 	u8 cmode = chip->ports[port].cmode;
-	int err;
+	int err = 0;
 
 	if (port != 0 && port != 9 && port != 10)
 		return -EOPNOTSUPP;      
Hi Marek

This warning likely comes from cmode not being a SERDES mode, and that
is not handles in the switch statementing. Do we want an

default:
	err = EINVAL;

?  
currently all the .serdes_power() methods return 0 for non-serdes ports.
This is because the way it is written, these methods are not called if
there is not a serdes lane for a given port.

For this issue with err variable undefined, to fix it we should simply
set int err=0 at the beginning of mv88e6393x_serdes_power(), to make it
behave like other serdes_power() methods do in serdes.c.  
Any objections to using a default case in the switch statement, tho?
I agree with Andrew that default statement would make the reasoning
clearer than just setting the variable at the start of the function.
No objection, just that it should be done for all the serdes_power()
methods in serdes.c.

Marek
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help