On Sat, Jun 01, 2019 at 11:30:16PM +0300, Vladimir Oltean wrote: > On Sat, 1 Jun 2019 at 19:03, Andrew Lunn <and...@lunn.ch> wrote: > > > > On Sat, Jun 01, 2019 at 01:37:34PM +0300, Vladimir Oltean wrote: > > > The code in sja1105_adjust_port_config relies on the fact that an > > > invalid link speed is detected by sja1105_get_speed_cfg and returned as > > > -EINVAL. However storing this into an enum that only has positive > > > members will cast it into an unsigned value, and it will miss the > > > negative check. > > > > > > So make the -EINVAL value part of the enum, so that it is stored as a > > > signed number and passes the negative check. > > > > > > Fixes: 8aa9ebccae87 ("net: dsa: Introduce driver for NXP SJA1105 5-port > > > L2 switch") > > > Signed-off-by: Vladimir Oltean <olte...@gmail.com> > > > > Hi Vladimir > > > > It seems like just using a switch statement would be simpler, and more > > likely to be correct. And it would avoid adding SJA1105_SPEED_INVALID > > = -EINVAL which feels hackish. > > > > Andrew > > Hi Andrew, > > You mean I should completely remove the sja1105_get_speed_cfg function? > I suppose I can do that, I'm only using it in one place.
I think it is often better to use simple, obviously correct code. This seems to be one example. Andrew