On Wed, Oct 8, 2025 at 12:04 PM Dumitru Ceara <[email protected]> wrote:

> On 10/7/25 2:10 PM, Ales Musil via dev wrote:
> > On Tue, Oct 7, 2025 at 2:07 PM Ales Musil <[email protected]> wrote:
> >
> >> The garp_rarp node attempted to get ecmp_nexthop table through
> >> the txn pointer which might be null. This didn't cause any crash
> >> as the pointer was never dereferenced. Remove the table lookup
> >> completely as the table wasn't used for anything within the node.
> >>
> >> lib/ovsdb-idl.c:4184:17: runtime error: member access within null
> pointer
> >> of type 'struct ovsdb_idl_txn'
> >>     ovsdb_idl_txn_get_idl /workspace/ovn/ovs/lib/ovsdb-idl.c:4184:17
> >>     en_garp_rarp_run /workspace/ovn/controller/ovn-controller.c:5604:38
> >>     engine_recompute /workspace/ovn/lib/inc-proc-eng.c:444:33
> >>     engine_compute /workspace/ovn/lib/inc-proc-eng.c:487:17
> >>     engine_run_node /workspace/ovn/lib/inc-proc-eng.c:546:14
> >>     engine_run /workspace/ovn/lib/inc-proc-eng.c:575:9
> >>     main /workspace/ovn/controller/ovn-controller.c:7507:21
> >>
> >> Fixes: 05527bd6ccdb ("controller: Extract garp_rarp to engine node.")
> >> Signed-off-by: Ales Musil <[email protected]>
> >> ---
>
> Hi Ales,
>
> Thanks for the fix!
>
> >>
> >>
> > Ah, this patch didn't include the removal of "ecmp_nh_table"
> > from "struct garp_rarp_ctx_in". I will take care of it in v2/merge.
> >
>
> With this addressed:
>
> Acked-by: Dumitru Ceara <[email protected]>
>
> >  controller/ovn-controller.c | 8 +-------
> >>  1 file changed, 1 insertion(+), 7 deletions(-)
> >>
> >> diff --git a/controller/ovn-controller.c b/controller/ovn-controller.c
> >> index ae76c8b22..9f8444c10 100644
> >> --- a/controller/ovn-controller.c
> >> +++ b/controller/ovn-controller.c
> >> @@ -5598,21 +5598,15 @@ en_garp_rarp_run(struct engine_node *node, void
> >> *data_)
> >>                  engine_get_input("SB_mac_binding", node),
> >>                  "lport_ip");
> >>
> >> -    struct ovsdb_idl_txn *ovnsb_idl_txn =
> >> engine_get_context()->ovnsb_idl_txn;
> >> -
> >> -    const struct sbrec_ecmp_nexthop_table *ecmp_nh_table =
> >> -
> >> sbrec_ecmp_nexthop_table_get(ovsdb_idl_txn_get_idl(ovnsb_idl_txn));
> >> -
> >>      struct ed_type_runtime_data *rt_data =
> >>          engine_get_input_data("runtime_data", node);
> >>
> >>      struct garp_rarp_ctx_in r_ctx_in = {
> >> -        .ovnsb_idl_txn = ovnsb_idl_txn,
> >> +        .ovnsb_idl_txn = engine_get_context()->ovnsb_idl_txn,
> >>          .cfg = cfg,
> >>          .sbrec_port_binding_by_datapath =
> sbrec_port_binding_by_datapath,
> >>          .sbrec_port_binding_by_name = sbrec_port_binding_by_name,
> >>          .sbrec_mac_binding_by_lport_ip = sbrec_mac_binding_by_lport_ip,
> >> -        .ecmp_nh_table = ecmp_nh_table,
> >>          .chassis = chassis,
> >>          .active_tunnels = &rt_data->active_tunnels,
> >>          .local_datapaths = &rt_data->local_datapaths,
> >> --
> >> 2.51.0
>
> Regards,
> Dumitru
>
>
Thank you Dumitru,

I have fixed the struct and merged it into main.

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

Reply via email to