diff options
Diffstat (limited to 'net/tipc')
-rw-r--r-- | net/tipc/monitor.c | 3 | ||||
-rw-r--r-- | net/tipc/socket.c | 3 | ||||
-rw-r--r-- | net/tipc/udp_media.c | 5 |
3 files changed, 8 insertions, 3 deletions
diff --git a/net/tipc/monitor.c b/net/tipc/monitor.c index b62caa1c770c..ed97a5876ebe 100644 --- a/net/tipc/monitor.c +++ b/net/tipc/monitor.c | |||
@@ -728,12 +728,13 @@ int tipc_nl_add_monitor_peer(struct net *net, struct tipc_nl_msg *msg, | |||
728 | u32 bearer_id, u32 *prev_node) | 728 | u32 bearer_id, u32 *prev_node) |
729 | { | 729 | { |
730 | struct tipc_monitor *mon = tipc_monitor(net, bearer_id); | 730 | struct tipc_monitor *mon = tipc_monitor(net, bearer_id); |
731 | struct tipc_peer *peer = mon->self; | 731 | struct tipc_peer *peer; |
732 | 732 | ||
733 | if (!mon) | 733 | if (!mon) |
734 | return -EINVAL; | 734 | return -EINVAL; |
735 | 735 | ||
736 | read_lock_bh(&mon->lock); | 736 | read_lock_bh(&mon->lock); |
737 | peer = mon->self; | ||
737 | do { | 738 | do { |
738 | if (*prev_node) { | 739 | if (*prev_node) { |
739 | if (peer->addr == *prev_node) | 740 | if (peer->addr == *prev_node) |
diff --git a/net/tipc/socket.c b/net/tipc/socket.c index c49b8df438cb..f9f5f3c3dab5 100644 --- a/net/tipc/socket.c +++ b/net/tipc/socket.c | |||
@@ -2180,7 +2180,8 @@ restart: | |||
2180 | TIPC_CONN_MSG, SHORT_H_SIZE, | 2180 | TIPC_CONN_MSG, SHORT_H_SIZE, |
2181 | 0, dnode, onode, dport, oport, | 2181 | 0, dnode, onode, dport, oport, |
2182 | TIPC_CONN_SHUTDOWN); | 2182 | TIPC_CONN_SHUTDOWN); |
2183 | tipc_node_xmit_skb(net, skb, dnode, tsk->portid); | 2183 | if (skb) |
2184 | tipc_node_xmit_skb(net, skb, dnode, tsk->portid); | ||
2184 | } | 2185 | } |
2185 | tsk->connected = 0; | 2186 | tsk->connected = 0; |
2186 | sock->state = SS_DISCONNECTING; | 2187 | sock->state = SS_DISCONNECTING; |
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 | } |