Subject: Re: [PATCH] ipv6: xfrm6: fix dubious code

From: Ben Hutchings <[email-masked]>
Date: Mon, 23 May 2011 08:36:00 -0700

On Mon, 2011-05-23 at 10:42 +0200, Eric Dumazet wrote:
> net/ipv6/xfrm6_tunnel.c: In function ‘xfrm6_tunnel_rcv’:
> net/ipv6/xfrm6_tunnel.c:244:53: warning: the omitted middle operand
> in ?: will always be ‘true’, suggest explicit middle operand
> 
> Signed-off-by: Eric Dumazet <[email-masked]>
> ---
>  net/ipv6/xfrm6_tunnel.c |    2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/net/ipv6/xfrm6_tunnel.c b/net/ipv6/xfrm6_tunnel.c
> index a6770a0..fb9b0c3 100644
> --- a/net/ipv6/xfrm6_tunnel.c
> +++ b/net/ipv6/xfrm6_tunnel.c
> @@ -241,7 +241,7 @@ static int xfrm6_tunnel_rcv(struct sk_buff *skb)
>  	__be32 spi;
>  
>  	spi = xfrm6_tunnel_spi_lookup(net, (const xfrm_address_t *)&iph->saddr);
> -	return xfrm6_rcv_spi(skb, IPPROTO_IPV6, spi) > 0 ? : 0;
> +	return xfrm6_rcv_spi(skb, IPPROTO_IPV6, spi) > 0 ? 1 : 0;
>  }
>  
>  static int xfrm6_tunnel_err(struct sk_buff *skb, struct inet6_skb_parm *opt,

I suspect that this was intended to return the result of xfrm6_rcv_spi()
if > 0.  But if it really is intended to return the result of the
inequality, then the '?:' operation is not needed at all.

Ben.

-- 
Ben Hutchings, Senior Software Engineer, Solarflare
Not speaking for my employer; that's the marketing department's job.
They asked us to note that Solarflare product names are trademarked.