summaryrefslogtreecommitdiff
path: root/net/tipc
diff options
context:
space:
mode:
authorWei Yongjun <weiyongjun1@huawei.com>2016-08-24 13:32:19 (GMT)
committerDavid S. Miller <davem@davemloft.net>2016-08-25 23:32:34 (GMT)
commita5de125dd46c851fc962806135953c1bd0a0f0df (patch)
tree40445c0d7f7ce707399095192da27dd0a9281614 /net/tipc
parent51af96b53469f3b8cfcfe0504d0ff87239175b78 (diff)
downloadlinux-a5de125dd46c851fc962806135953c1bd0a0f0df.tar.xz
tipc: fix the error handling in tipc_udp_enable()
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>
Diffstat (limited to 'net/tipc')
-rw-r--r--net/tipc/udp_media.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/net/tipc/udp_media.c b/net/tipc/udp_media.c
index b016c01..ae7e14c 100644
--- a/net/tipc/udp_media.c
+++ b/net/tipc/udp_media.c
@@ -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;
}