Subject: Re: [PATCH net 1/2] net: dsa: sja1105: Force a negative value for enum sja1105_speed_t

From: Andrew Lunn <[email-masked]>
Date: Sat, 1 Jun 2019 23:36:13 +0200

On Sat, Jun 01, 2019 at 11:30:16PM +0300, Vladimir Oltean wrote:
> On Sat, 1 Jun 2019 at 19:03, Andrew Lunn <[email-masked]> 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 <[email-masked]>
> >
> > 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