On Tue, 8 Apr 2025 19:46:46 -0600
Tom Rini <tr...@konsulko.com> wrote:

Hi Tom,

> On Wed, Apr 09, 2025 at 12:53:47AM +0100, Andre Przywara wrote:
> > On Tue, 8 Apr 2025 16:29:18 -0600
> > Tom Rini <tr...@konsulko.com> wrote:
> > 
> > Hi Tom,
> > 
> > thanks for staying on this!
> >   
> > > On Thu, Mar 27, 2025 at 03:33:00PM +0000, Andre Przywara wrote:
> > >   
> > > > The net_check_prereq() routine in the generic network handling code
> > > > mixes case: labels with #ifdef's, which makes predicting fallthrough
> > > > situations tricky. We had two "fall through" comments in the code, but
> > > > at the wrong places.
> > > > 
> > > > Remove one unneeded comment (no annotations necessary between just empty
> > > > labels), and move one other instance to the right place (before any
> > > > label sequence).
> > > > This makes GCC's implicit fallthrough checker happy.
> > > > 
> > > > Signed-off-by: Andre Przywara <andre.przyw...@arm.com>
> > > > Reviewed-by: Tom Rini <tr...@konsulko.com>
> > > > ---
> > > >  net/net.c | 3 +--
> > > >  1 file changed, 1 insertion(+), 2 deletions(-)
> > > > 
> > > > diff --git a/net/net.c b/net/net.c
> > > > index 5219367e391..f191f16357c 100644
> > > > --- a/net/net.c
> > > > +++ b/net/net.c
> > > > @@ -1525,7 +1525,6 @@ static int net_check_prereq(enum proto_t protocol)
> > > >  #if defined(CONFIG_CMD_NFS)
> > > >         case NFS:
> > > >  #endif
> > > > -               /* Fall through */
> > > >         case TFTPGET:
> > > >         case TFTPPUT:
> > > >                 if (IS_ENABLED(CONFIG_IPV6) && use_ip6) {
> > > > @@ -1539,11 +1538,11 @@ static int net_check_prereq(enum proto_t 
> > > > protocol)
> > > >                         puts("*** ERROR: `serverip' not set\n");
> > > >                         return 1;
> > > >                 }
> > > > +               fallthrough;
> > > >  #if    defined(CONFIG_CMD_PING) || \
> > > >         defined(CONFIG_CMD_DNS) || defined(CONFIG_PROT_UDP)
> > > >  common:
> > > >  #endif
> > > > -               /* Fall through */
> > > >  
> > > >         case NETCONS:
> > > >         case FASTBOOT_UDP:    
> > > 
> > > So this one is harder than it looks. With clang, we cannot seemingly
> > > have:
> > >   fallthrough;
> > > #if defined(CONFIG_CMD_PING) || \
> > >     defined(CONFIG_CMD_DNS) || defined(CONFIG_PROT_UDP)
> > > common:
> > > #endif
> > > 
> > > And gcc was failing on:
> > >   }
> > > #if defined(CONFIG_CMD_PING) || \
> > >     defined(CONFIG_CMD_DNS) || defined(CONFIG_PROT_UDP)
> > > common:
> > > #endif
> > >   fallthrough;  
> > 
> > Yes, later stages of the CI told me so already ;-)
> >   
> > > Maybe we can move the label to inside the next set of cases, and then
> > > also add CONFIG_CMD_PING6 to the checks, as that also has 'goto common;'  
> > 
> > I found some other solution: dropping the #if's around the common:
> > label, then marking this with __maybe_unused instead. Seems to work for
> > both GCC and clang, and makes the code even more readable.
> > 
> > Will send this among the other gazillion fixes I meanwhile added in a
> > v2, to a mailbox near you.
> > If you can't wait: sunxi/fallthrough has the bits, though not yet split
> > up and without commit messages. Still not passing all checks, but the
> > CI builds seem to stop early, before revealing all issues, so this is a
> > piecemeal job :-(  
> 
> I thought I had tried what you suggest but maybe didn't quite get things
> aligned right (but I also modified sandbox so it would trigger the
> unused warning). That said, I'm applying most of v1 now'ish, and have
> only stopped as part of trying to narrow down the seemingly random
> evb-ast2600 CI failure.

Can you hold back with this patch here for now? I will send my new version
of this one later, which passes more CI. I didn't find more overlaps
between this and my new series, so I wonder if you could apply what you
think is ready from this one (definitely minus this patch, but maybe
others), and then I send another series with new fixes plus what's left
from this one. This would avoid me sending a v2 of this just because of
this one patch.

Cheers,
Andre

Reply via email to