openvswitch: fix a sparse warning
authorAndy Zhou <azhou@nicira.com>
Mon, 6 Oct 2014 20:22:51 +0000 (13:22 -0700)
committerDavid S. Miller <davem@davemloft.net>
Tue, 7 Oct 2014 04:10:48 +0000 (00:10 -0400)
Fix a sparse warning introduced by commit:
f5796684069e0c71c65bce6a6d4766114aec1396 (openvswitch: Add support for
Geneve tunneling.) caught by kbuild test robot:

reproduce:
  # apt-get install sparse
  #   git checkout f5796684069e0c71c65bce6a6d4766114aec1396
  #     make ARCH=x86_64 allmodconfig
  #       make C=1 CF=-D__CHECK_ENDIAN__
  #
  #
  #       sparse warnings: (new ones prefixed by >>)
  #
  #       >> net/openvswitch/vport-geneve.c:109:15: sparse: incorrect type in assignment (different base types)
  #          net/openvswitch/vport-geneve.c:109:15:    expected restricted __be16 [usertype] sport
  #             net/openvswitch/vport-geneve.c:109:15:    got int
  #             >> net/openvswitch/vport-geneve.c:110:56: sparse: incorrect type in argument 3 (different base types)
  #                net/openvswitch/vport-geneve.c:110:56:    expected unsigned short [unsigned] [usertype] value
  #                   net/openvswitch/vport-geneve.c:110:56:    got restricted __be16 [usertype] sport

Reported-by: kbuild test robot <fengguang.wu@intel.com>
Signed-off-by: Andy Zhou <azhou@nicira.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/openvswitch/vport-geneve.c

index 5572d48..910b3ef 100644 (file)
@@ -104,10 +104,9 @@ static int geneve_get_options(const struct vport *vport,
                              struct sk_buff *skb)
 {
        struct geneve_port *geneve_port = geneve_vport(vport);
-       __be16 sport;
+       struct inet_sock *sk = inet_sk(geneve_port->gs->sock->sk);
 
-       sport = ntohs(inet_sk(geneve_port->gs->sock->sk)->inet_sport);
-       if (nla_put_u16(skb, OVS_TUNNEL_ATTR_DST_PORT, sport))
+       if (nla_put_u16(skb, OVS_TUNNEL_ATTR_DST_PORT, ntohs(sk->inet_sport)))
                return -EMSGSIZE;
        return 0;
 }