[PATCH 05/18] net/net: fix switch/case fallthrough annotations

Tom Rini trini at konsulko.com
Wed Apr 9 00:29:18 CEST 2025


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.przywara at arm.com>
> Reviewed-by: Tom Rini <trini at 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;

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;'

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 659 bytes
Desc: not available
URL: <https://lists.denx.de/pipermail/u-boot/attachments/20250408/14e84a33/attachment.sig>


More information about the U-Boot mailing list