diff options
author | Wei Yongjun <weiyongjun1@huawei.com> | 2016-08-24 09:32:19 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2016-08-25 19:32:34 -0400 |
commit | a5de125dd46c851fc962806135953c1bd0a0f0df (patch) | |
tree | 40445c0d7f7ce707399095192da27dd0a9281614 | |
parent | 51af96b53469f3b8cfcfe0504d0ff87239175b78 (diff) |
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>
-rw-r--r-- | net/tipc/udp_media.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/net/tipc/udp_media.c b/net/tipc/udp_media.c index b016c011970b..ae7e14cae085 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, | |||
396 | tuncfg.encap_destroy = NULL; | 396 | tuncfg.encap_destroy = NULL; |
397 | setup_udp_tunnel_sock(net, ub->ubsock, &tuncfg); | 397 | setup_udp_tunnel_sock(net, ub->ubsock, &tuncfg); |
398 | 398 | ||
399 | if (enable_mcast(ub, remote)) | 399 | err = enable_mcast(ub, remote); |
400 | if (err) | ||
400 | goto err; | 401 | goto err; |
401 | return 0; | 402 | return 0; |
402 | err: | 403 | err: |
404 | if (ub->ubsock) | ||
405 | udp_tunnel_sock_release(ub->ubsock); | ||
403 | kfree(ub); | 406 | kfree(ub); |
404 | return err; | 407 | return err; |
405 | } | 408 | } |