summaryrefslogtreecommitdiffstats
path: root/net/tipc/monitor.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/tipc/monitor.c')
-rw-r--r--net/tipc/monitor.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/net/tipc/monitor.c b/net/tipc/monitor.c
index be70a57c1ff9..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,
u32 bearer_id, u32 *prev_node)
{
struct tipc_monitor *mon = tipc_monitor(net, bearer_id);
- struct tipc_peer *peer = mon->self;
+ struct tipc_peer *peer;
if (!mon)
return -EINVAL;
read_lock_bh(&mon->lock);
+ peer = mon->self;
do {
if (*prev_node) {
if (peer->addr == *prev_node)
@@ -794,10 +795,10 @@ int __tipc_nl_add_monitor(struct net *net, struct tipc_nl_msg *msg,
return 0;
attr_msg_full:
+ read_unlock_bh(&mon->lock);
nla_nest_cancel(msg->skb, attrs);
msg_full:
genlmsg_cancel(msg->skb, hdr);
- read_unlock_bh(&mon->lock);
return -EMSGSIZE;
}
OpenPOWER on IntegriCloud