Thanks Ales, Acked-by: Mark Michelson <[email protected]>
On Mon, Oct 6, 2025 at 6:19 AM Ales Musil via dev <[email protected]> wrote: > > The ovn_datapath lflow refs are currently used for logical router > incremental processing. By not clearing them we can cause a race > condition during parallel processing when the ref is used after > being freed by a different thread. Ensure that the refs are cleared > before we do full lflow recompute. > > Fixes: 9ec96d0d85b6 ("northd: Add and delete logical routers in en-lflow > engine node.") > Signed-off-by: Ales Musil <[email protected]> > --- > northd/northd.c | 9 +++++++++ > 1 file changed, 9 insertions(+) > > diff --git a/northd/northd.c b/northd/northd.c > index 147f28dd5..8efbf4553 100644 > --- a/northd/northd.c > +++ b/northd/northd.c > @@ -19176,6 +19176,7 @@ lflow_reset_northd_refs(struct lflow_input > *lflow_input) > struct ls_stateful_record *ls_stateful_rec; > struct ovn_lb_datapaths *lb_dps; > struct ovn_port *op; > + const struct ovn_datapath *od; > > LR_STATEFUL_TABLE_FOR_EACH (lr_stateful_rec, > lflow_input->lr_stateful_table) { > @@ -19200,6 +19201,14 @@ lflow_reset_northd_refs(struct lflow_input > *lflow_input) > HMAP_FOR_EACH (lb_dps, hmap_node, lflow_input->lb_datapaths_map) { > lflow_ref_clear(lb_dps->lflow_ref); > } > + > + HMAP_FOR_EACH (od, key_node, &lflow_input->lr_datapaths->datapaths) { > + lflow_ref_clear(od->datapath_lflows); > + } > + > + HMAP_FOR_EACH (od, key_node, &lflow_input->ls_datapaths->datapaths) { > + lflow_ref_clear(od->datapath_lflows); > + } > } > > bool > -- > 2.51.0 > > _______________________________________________ > dev mailing list > [email protected] > https://mail.openvswitch.org/mailman/listinfo/ovs-dev > _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
