diff options
author | David S. Miller <davem@davemloft.net> | 2015-02-27 18:18:52 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2015-02-27 18:18:52 -0500 |
commit | 721a57a02dfc81b6d63b93b8ca23be3004b61515 (patch) | |
tree | 6d5b3bdd02fd7586b54de631f806e76efcdbfb50 /net/tipc/subscr.c | |
parent | 247f6d0f8667fda408fbe0e503ab54a957be2ce5 (diff) | |
parent | d76a436d50d1ebce352e1815eaea79a254b2b24f (diff) |
Merge branch 'tipc-next'
Erik Hugne says:
====================
tipc: bug fix and some improvements
Most important is a fix for a nullptr exception that would occur when
name table subscriptions fail. The remaining patches are performance
improvements and cosmetic changes.
v2: remove unnecessary whitespace in patch #2
====================
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/tipc/subscr.c')
-rw-r--r-- | net/tipc/subscr.c | 23 |
1 files changed, 4 insertions, 19 deletions
diff --git a/net/tipc/subscr.c b/net/tipc/subscr.c index 72c339e432aa..1c147c869c2e 100644 --- a/net/tipc/subscr.c +++ b/net/tipc/subscr.c @@ -162,19 +162,6 @@ static void subscr_del(struct tipc_subscription *sub) atomic_dec(&tn->subscription_count); } -/** - * subscr_terminate - terminate communication with a subscriber - * - * Note: Must call it in process context since it might sleep. - */ -static void subscr_terminate(struct tipc_subscription *sub) -{ - struct tipc_subscriber *subscriber = sub->subscriber; - struct tipc_net *tn = net_generic(sub->net, tipc_net_id); - - tipc_conn_terminate(tn->topsrv, subscriber->conid); -} - static void subscr_release(struct tipc_subscriber *subscriber) { struct tipc_subscription *sub; @@ -312,16 +299,14 @@ static void subscr_conn_msg_event(struct net *net, int conid, { struct tipc_subscriber *subscriber = usr_data; struct tipc_subscription *sub = NULL; + struct tipc_net *tn = net_generic(net, tipc_net_id); spin_lock_bh(&subscriber->lock); - if (subscr_subscribe(net, (struct tipc_subscr *)buf, subscriber, - &sub) < 0) { - spin_unlock_bh(&subscriber->lock); - subscr_terminate(sub); - return; - } + subscr_subscribe(net, (struct tipc_subscr *)buf, subscriber, &sub); if (sub) tipc_nametbl_subscribe(sub); + else + tipc_conn_terminate(tn->topsrv, subscriber->conid); spin_unlock_bh(&subscriber->lock); } |