tipc: fix the error handling in tipc_udp_enable()
authorWei Yongjun <weiyongjun1@huawei.com>
Wed, 24 Aug 2016 13:32:19 +0000 (13:32 +0000)
committerDavid S. Miller <davem@davemloft.net>
Thu, 25 Aug 2016 23:32:34 +0000 (16:32 -0700)
Fix to return a negative error code in enable_mcast() error handling
case, and release udp socket when necessary.

Fixes: d0f91938bede ("tipc: add ip/udp media type")
Signed-off-by: Wei Yongjun <weiyongjun1@huawei.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/tipc/udp_media.c

index b016c011970b7e5089b277c5bcd09a8fa31a3af0..ae7e14cae0857933c6c140a4382d9ab054ce353f 100644 (file)
@@ -396,10 +396,13 @@ static int tipc_udp_enable(struct net *net, struct tipc_bearer *b,
        tuncfg.encap_destroy = NULL;
        setup_udp_tunnel_sock(net, ub->ubsock, &tuncfg);
 
-       if (enable_mcast(ub, remote))
+       err = enable_mcast(ub, remote);
+       if (err)
                goto err;
        return 0;
 err:
+       if (ub->ubsock)
+               udp_tunnel_sock_release(ub->ubsock);
        kfree(ub);
        return err;
 }