diff options
Diffstat (limited to 'net/tipc')
-rw-r--r-- | net/tipc/node.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/net/tipc/node.c b/net/tipc/node.c index 9d2f4c2b08ab..27753325e06e 100644 --- a/net/tipc/node.c +++ b/net/tipc/node.c | |||
@@ -263,6 +263,11 @@ static void tipc_node_write_lock(struct tipc_node *n) | |||
263 | write_lock_bh(&n->lock); | 263 | write_lock_bh(&n->lock); |
264 | } | 264 | } |
265 | 265 | ||
266 | static void tipc_node_write_unlock_fast(struct tipc_node *n) | ||
267 | { | ||
268 | write_unlock_bh(&n->lock); | ||
269 | } | ||
270 | |||
266 | static void tipc_node_write_unlock(struct tipc_node *n) | 271 | static void tipc_node_write_unlock(struct tipc_node *n) |
267 | { | 272 | { |
268 | struct net *net = n->net; | 273 | struct net *net = n->net; |
@@ -417,7 +422,7 @@ void tipc_node_subscribe(struct net *net, struct list_head *subscr, u32 addr) | |||
417 | } | 422 | } |
418 | tipc_node_write_lock(n); | 423 | tipc_node_write_lock(n); |
419 | list_add_tail(subscr, &n->publ_list); | 424 | list_add_tail(subscr, &n->publ_list); |
420 | tipc_node_write_unlock(n); | 425 | tipc_node_write_unlock_fast(n); |
421 | tipc_node_put(n); | 426 | tipc_node_put(n); |
422 | } | 427 | } |
423 | 428 | ||
@@ -435,7 +440,7 @@ void tipc_node_unsubscribe(struct net *net, struct list_head *subscr, u32 addr) | |||
435 | } | 440 | } |
436 | tipc_node_write_lock(n); | 441 | tipc_node_write_lock(n); |
437 | list_del_init(subscr); | 442 | list_del_init(subscr); |
438 | tipc_node_write_unlock(n); | 443 | tipc_node_write_unlock_fast(n); |
439 | tipc_node_put(n); | 444 | tipc_node_put(n); |
440 | } | 445 | } |
441 | 446 | ||