Skip to content

Commit

Permalink
tipc: fix wrong notification node addresses
Browse files Browse the repository at this point in the history
commit c08e584 upstream.

The previous bug fix had an unfortunate side effect that broke
distribution of binding table entries between nodes. The updated
tipc_sock_addr struct is also used further down in the same
function, and there the old value is still the correct one.

Fixes: 032062f ("tipc: fix wrong publisher node address in link publications")
Signed-off-by: Jon Maloy <jmaloy@redhat.com>
Link: https://lore.kernel.org/r/20220216020009.3404578-1-jmaloy@redhat.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  • Loading branch information
lmcjoma authored and gregkh committed Feb 23, 2022
1 parent e124fe2 commit 934c8c9
Showing 1 changed file with 6 additions and 5 deletions.
11 changes: 6 additions & 5 deletions net/tipc/node.c
Expand Up @@ -403,7 +403,7 @@ static void tipc_node_write_unlock(struct tipc_node *n)
u32 flags = n->action_flags;
struct list_head *publ_list;
struct tipc_uaddr ua;
u32 bearer_id;
u32 bearer_id, node;

if (likely(!flags)) {
write_unlock_bh(&n->lock);
Expand All @@ -414,6 +414,7 @@ static void tipc_node_write_unlock(struct tipc_node *n)
TIPC_LINK_STATE, n->addr, n->addr);
sk.ref = n->link_id;
sk.node = tipc_own_addr(net);
node = n->addr;
bearer_id = n->link_id & 0xffff;
publ_list = &n->publ_list;

Expand All @@ -423,17 +424,17 @@ 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, sk.node, n->capabilities);
tipc_publ_notify(net, publ_list, node, n->capabilities);

if (flags & TIPC_NOTIFY_NODE_UP)
tipc_named_node_up(net, sk.node, n->capabilities);
tipc_named_node_up(net, node, n->capabilities);

if (flags & TIPC_NOTIFY_LINK_UP) {
tipc_mon_peer_up(net, sk.node, bearer_id);
tipc_mon_peer_up(net, node, bearer_id);
tipc_nametbl_publish(net, &ua, &sk, sk.ref);
}
if (flags & TIPC_NOTIFY_LINK_DOWN) {
tipc_mon_peer_down(net, sk.node, bearer_id);
tipc_mon_peer_down(net, node, bearer_id);
tipc_nametbl_withdraw(net, &ua, &sk, sk.ref);
}
}
Expand Down

0 comments on commit 934c8c9

Please sign in to comment.