In commit
7d33939f475d403e79124e3143d7951dcfe8629f
("tipc: delay delete of link when failover is needed") we
introduced a loop for finding and removing a link pointer
in an array. The removal is done after we have left the loop,
giving the impression that one may remove the wrong pointer
if no matching element is found.
This is not really a bug, since we know that there will always
be a matching element, but it looks wrong, and causes a smatch
warning.
We fix this loop with this commit.
Signed-off-by: Jon Maloy <jon.maloy@ericsson.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
int i;
for (i = 0; i < MAX_BEARERS; i++) {
- if (l_ptr == n_ptr->links[i])
- break;
+ if (l_ptr != n_ptr->links[i])
+ continue;
+ n_ptr->links[i] = NULL;
+ atomic_dec(&tipc_num_links);
+ n_ptr->link_cnt--;
}
- n_ptr->links[i] = NULL;
- atomic_dec(&tipc_num_links);
- n_ptr->link_cnt--;
}
static void node_established_contact(struct tipc_node *n_ptr)