Run ovs_list_init on list_node from desired flow.
Not doing that can potentially cause crash on
ovs_assert(ovs_list_is_empty(&f->list_node))
this might happen when we have conditional monitoring
enabled and have some flow like below being processed
by ofctrl in a single run.

flowA is removed, flowA is added, flowA is removed.

This is most likely related to BZ[0].

[0] https://bugzilla.redhat.com/2125723
Suggested-By: Dumitru Ceara <[email protected]>
Signed-off-by: Ales Musil <[email protected]>
---
I'm not adding the BZ as Reported-At because this might
not fix the issue they are facing. It seems to be very hard
to reproduce, however it still is a good idea to apply this
fix as in the context it's the right to do and shouldn't cause
any harm.
---
 controller/ofctrl.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/controller/ofctrl.c b/controller/ofctrl.c
index c77991258..fb0e0869c 100644
--- a/controller/ofctrl.c
+++ b/controller/ofctrl.c
@@ -1535,6 +1535,7 @@ remove_flows_from_sb_to_flow(struct 
ovn_desired_flow_table *flow_table,
             free(sfr);
         }
         ovs_list_remove(&f->list_node);
+        ovs_list_init(&f->list_node);
         if (log_msg) {
             ovn_flow_log(&f->flow, log_msg);
         }
-- 
2.37.3

_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to