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

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

Reply via email to