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

Reply via email to