vxlan: silence one build warning
authorZhi Yong Wu <wuzhy@linux.vnet.ibm.com>
Mon, 28 Oct 2013 06:01:48 +0000 (14:01 +0800)
committerDavid S. Miller <davem@davemloft.net>
Tue, 29 Oct 2013 04:19:04 +0000 (00:19 -0400)
drivers/net/vxlan.c: In function ‘vxlan_sock_add’:
drivers/net/vxlan.c:2298:11: warning: ‘sock’ may be used uninitialized in this function [-Wmaybe-uninitialized]
drivers/net/vxlan.c:2275:17: note: ‘sock’ was declared here
  LD      drivers/net/built-in.o

Signed-off-by: Zhi Yong Wu <wuzhy@linux.vnet.ibm.com>
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/vxlan.c

index da8479479d01cfa9a01b17317ec24f2f4526c592..75a3a740ce1981354d69501bf8938150c55ffbd2 100644 (file)
@@ -2180,7 +2180,7 @@ static void vxlan_del_work(struct work_struct *work)
  * could be used for both IPv4 and IPv6 communications, but
  * users may set bindv6only=1.
  */
-static int create_v6_sock(struct net *net, __be16 port, struct socket **psock)
+static struct socket *create_v6_sock(struct net *net, __be16 port)
 {
        struct sock *sk;
        struct socket *sock;
@@ -2193,7 +2193,7 @@ static int create_v6_sock(struct net *net, __be16 port, struct socket **psock)
        rc = sock_create_kern(AF_INET6, SOCK_DGRAM, IPPROTO_UDP, &sock);
        if (rc < 0) {
                pr_debug("UDPv6 socket create failed\n");
-               return rc;
+               return ERR_PTR(rc);
        }
 
        /* Put in proper namespace */
@@ -2208,28 +2208,27 @@ static int create_v6_sock(struct net *net, __be16 port, struct socket **psock)
                pr_debug("bind for UDPv6 socket %pI6:%u (%d)\n",
                         &vxlan_addr.sin6_addr, ntohs(vxlan_addr.sin6_port), rc);
                sk_release_kernel(sk);
-               return rc;
+               return ERR_PTR(rc);
        }
        /* At this point, IPv6 module should have been loaded in
         * sock_create_kern().
         */
        BUG_ON(!ipv6_stub);
 
-       *psock = sock;
        /* Disable multicast loopback */
        inet_sk(sk)->mc_loop = 0;
-       return 0;
+       return sock;
 }
 
 #else
 
-static int create_v6_sock(struct net *net, __be16 port, struct socket **psock)
+static struct socket *create_v6_sock(struct net *net, __be16 port)
 {
-               return -EPFNOSUPPORT;
+               return ERR_PTR(-EPFNOSUPPORT);
 }
 #endif
 
-static int create_v4_sock(struct net *net, __be16 port, struct socket **psock)
+static struct socket *create_v4_sock(struct net *net, __be16 port)
 {
        struct sock *sk;
        struct socket *sock;
@@ -2244,7 +2243,7 @@ static int create_v4_sock(struct net *net, __be16 port, struct socket **psock)
        rc = sock_create_kern(AF_INET, SOCK_DGRAM, IPPROTO_UDP, &sock);
        if (rc < 0) {
                pr_debug("UDP socket create failed\n");
-               return rc;
+               return ERR_PTR(rc);
        }
 
        /* Put in proper namespace */
@@ -2257,13 +2256,12 @@ static int create_v4_sock(struct net *net, __be16 port, struct socket **psock)
                pr_debug("bind for UDP socket %pI4:%u (%d)\n",
                         &vxlan_addr.sin_addr, ntohs(vxlan_addr.sin_port), rc);
                sk_release_kernel(sk);
-               return rc;
+               return ERR_PTR(rc);
        }
 
-       *psock = sock;
        /* Disable multicast loopback */
        inet_sk(sk)->mc_loop = 0;
-       return 0;
+       return sock;
 }
 
 /* Create new listen socket if needed */
@@ -2274,7 +2272,6 @@ static struct vxlan_sock *vxlan_socket_create(struct net *net, __be16 port,
        struct vxlan_sock *vs;
        struct socket *sock;
        struct sock *sk;
-       int rc = 0;
        unsigned int h;
 
        vs = kmalloc(sizeof(*vs), GFP_KERNEL);
@@ -2287,12 +2284,12 @@ static struct vxlan_sock *vxlan_socket_create(struct net *net, __be16 port,
        INIT_WORK(&vs->del_work, vxlan_del_work);
 
        if (ipv6)
-               rc = create_v6_sock(net, port, &sock);
+               sock = create_v6_sock(net, port);
        else
-               rc = create_v4_sock(net, port, &sock);
-       if (rc < 0) {
+               sock = create_v4_sock(net, port);
+       if (IS_ERR(sock)) {
                kfree(vs);
-               return ERR_PTR(rc);
+               return ERR_PTR(PTR_ERR(sock));
        }
 
        vs->sock = sock;