Merge tag '9p-for-5.13-rc1' of git://github.com/martinetd/linux
[linux-2.6-microblaze.git] / net / tipc / node.c
index e0ee832..8217905 100644 (file)
@@ -372,42 +372,49 @@ static struct tipc_node *tipc_node_find_by_id(struct net *net, u8 *id)
 }
 
 static void tipc_node_read_lock(struct tipc_node *n)
+       __acquires(n->lock)
 {
        read_lock_bh(&n->lock);
 }
 
 static void tipc_node_read_unlock(struct tipc_node *n)
+       __releases(n->lock)
 {
        read_unlock_bh(&n->lock);
 }
 
 static void tipc_node_write_lock(struct tipc_node *n)
+       __acquires(n->lock)
 {
        write_lock_bh(&n->lock);
 }
 
 static void tipc_node_write_unlock_fast(struct tipc_node *n)
+       __releases(n->lock)
 {
        write_unlock_bh(&n->lock);
 }
 
 static void tipc_node_write_unlock(struct tipc_node *n)
+       __releases(n->lock)
 {
+       struct tipc_socket_addr sk;
        struct net *net = n->net;
-       u32 addr = 0;
        u32 flags = n->action_flags;
-       u32 link_id = 0;
-       u32 bearer_id;
        struct list_head *publ_list;
+       struct tipc_uaddr ua;
+       u32 bearer_id;
 
        if (likely(!flags)) {
                write_unlock_bh(&n->lock);
                return;
        }
 
-       addr = n->addr;
-       link_id = n->link_id;
-       bearer_id = link_id & 0xffff;
+       tipc_uaddr(&ua, TIPC_SERVICE_RANGE, TIPC_NODE_SCOPE,
+                  TIPC_LINK_STATE, n->addr, n->addr);
+       sk.ref = n->link_id;
+       sk.node = n->addr;
+       bearer_id = n->link_id & 0xffff;
        publ_list = &n->publ_list;
 
        n->action_flags &= ~(TIPC_NOTIFY_NODE_DOWN | TIPC_NOTIFY_NODE_UP |
@@ -416,20 +423,18 @@ static void tipc_node_write_unlock(struct tipc_node *n)
        write_unlock_bh(&n->lock);
 
        if (flags & TIPC_NOTIFY_NODE_DOWN)
-               tipc_publ_notify(net, publ_list, addr, n->capabilities);
+               tipc_publ_notify(net, publ_list, n->addr, n->capabilities);
 
        if (flags & TIPC_NOTIFY_NODE_UP)
-               tipc_named_node_up(net, addr, n->capabilities);
+               tipc_named_node_up(net, n->addr, n->capabilities);
 
        if (flags & TIPC_NOTIFY_LINK_UP) {
-               tipc_mon_peer_up(net, addr, bearer_id);
-               tipc_nametbl_publish(net, TIPC_LINK_STATE, addr, addr,
-                                    TIPC_NODE_SCOPE, link_id, link_id);
+               tipc_mon_peer_up(net, n->addr, bearer_id);
+               tipc_nametbl_publish(net, &ua, &sk, n->link_id);
        }
        if (flags & TIPC_NOTIFY_LINK_DOWN) {
-               tipc_mon_peer_down(net, addr, bearer_id);
-               tipc_nametbl_withdraw(net, TIPC_LINK_STATE, addr,
-                                     addr, link_id);
+               tipc_mon_peer_down(net, n->addr, bearer_id);
+               tipc_nametbl_withdraw(net, &ua, &sk, n->link_id);
        }
 }
 
@@ -2009,7 +2014,7 @@ static bool tipc_node_check_state(struct tipc_node *n, struct sk_buff *skb,
                return true;
        }
 
-       /* No synching needed if only one link */
+       /* No syncing needed if only one link */
        if (!pl || !tipc_link_is_up(pl))
                return true;