diff mbox

ipv6: xfrm6: fix dubious code

Message ID 1306140167.2869.8.camel@edumazet-laptop
State Changes Requested, archived
Delegated to: David Miller
Headers show

Commit Message

Eric Dumazet May 23, 2011, 8:42 a.m. UTC
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 <eric.dumazet@gmail.com>
---
 net/ipv6/xfrm6_tunnel.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)



--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Comments

Ben Hutchings May 23, 2011, 3:36 p.m. UTC | #1
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 <eric.dumazet@gmail.com>
> ---
>  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.
David Miller May 23, 2011, 8:33 p.m. UTC | #2
From: Ben Hutchings <bhutchings@solarflare.com>

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 <eric.dumazet@gmail.com>

>> ---

>>  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.


I also suspect this was the intent, but I'm not sure why it matters
at all.

The equivalent code implementing the same operations on the ipv4
side return xfrm4_rcv_spi()'s return value directly.

So we need to either decide that we can do the same thing here on the
ipv6 side, or document exactly why we can't.
Steffen Klassert May 24, 2011, 5:02 a.m. UTC | #3
On Mon, May 23, 2011 at 04:33:02PM -0400, David Miller wrote:
> From: Ben Hutchings <bhutchings@solarflare.com>
> 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 <eric.dumazet@gmail.com>
> >> ---
> >>  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.
> 
> I also suspect this was the intent, but I'm not sure why it matters
> at all.
> 
> The equivalent code implementing the same operations on the ipv4
> side return xfrm4_rcv_spi()'s return value directly.
> 
> So we need to either decide that we can do the same thing here on the
> ipv6 side, or document exactly why we can't.

I think we can return the value directly like ipv4 does it. xfrm6_rcv_spi()
returns the return value of xfrm_input() which returns 0 in any case.
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

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,