--- a/net/tipc/udp_media.c +++ b/net/tipc/udp_media.c @@ -405,10 +405,13 @@ static int tipc_udp_enable(struct net *n 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; }