Subject: Re: [PATCH net v3 1/1] ip6_tunnel: Correct mistake in if statement.

From: Leon Romanovsky <[email-masked]>
Date: Mon, 7 Nov 2022 10:58:13 +0200

On Mon, Nov 07, 2022 at 04:31:22AM -0400, Jamie Gloudon wrote:
> Make sure t->dev->flags & IFF_UP is check first for logical reason.
> 
> Fixes: 6c1cb4393cc7 ("ip6_tunnel: fix ip6 tunnel lookup in collect_md
> mode")
> Signed-off-by: Jamie Gloudon <[email-masked]>
> ---
>  net/ipv6/ip6_tunnel.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/net/ipv6/ip6_tunnel.c b/net/ipv6/ip6_tunnel.c
> index 2fb4c6ad7243..22c71f991bb7 100644
> --- a/net/ipv6/ip6_tunnel.c
> +++ b/net/ipv6/ip6_tunnel.c
> @@ -162,7 +162,7 @@ ip6_tnl_lookup(struct net *net, int link,
>  		return cand;
>  
>  	t = rcu_dereference(ip6n->collect_md_tun);
> -	if (t && t->dev->flags & IFF_UP)
> +	if (t && (t->dev->flags & IFF_UP))

While this change makes is less ambiguous for reader, the C precedence
rules are clear and & evaluated before &&.
https://en.cppreference.com/w/c/language/operator_precedence

There is nothing to fix here.

Thanks

>  		return t;
>  
>  	t = rcu_dereference(ip6n->tnls_wc[0]);
> -- 
> 2.28.0
>