The previous code assumed that hash_node would be NULL when the loop terminated without a match. That's not the case, so track the match a little differently.
Signed-off-by: Russell Bryant <rbry...@redhat.com> --- ovn/ovn-nbd.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/ovn/ovn-nbd.c b/ovn/ovn-nbd.c index c9d6ce4..a2c1dd5 100644 --- a/ovn/ovn-nbd.c +++ b/ovn/ovn-nbd.c @@ -152,19 +152,20 @@ set_bindings(struct nbd_context *ctx) } NBREC_LOGICAL_PORT_FOR_EACH(lport, ctx->ovnnb_idl) { + binding = NULL; HMAP_FOR_EACH_WITH_HASH(hash_node, node, hash_string(lport->name, 0), &bindings_hmap) { if (!strcmp(lport->name, hash_node->binding->logical_port)) { + binding = hash_node->binding; break; } } - if (hash_node) { + if (binding) { /* We found an existing binding for this logical port. Update its * contents. Right now the only thing we expect that could change * is the list of MAC addresses. */ - binding = hash_node->binding; hmap_remove(&bindings_hmap, &hash_node->node); free(hash_node); hash_node = NULL; -- 2.1.0 _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev