On 12/4/25 11:14 AM, Dumitru Ceara wrote:
> On 12/4/25 10:17 AM, Eelco Chaudron wrote:
>>
>>
>> On 3 Dec 2025, at 15:45, Ilya Maximets wrote:
>>
>>> IDL may contain deleted or orphan rows that should never be visible
>>> to the user.  However, ovsdb_idl_get_row_for_uuid() function simply
>>> looks up the row by UUID and returns it without checking if the row
>>> actually exists in the IDL.  This is causing a crash on assertion
>>> failure in ovn-controller when it looks up and finds port binding
>>> records that were already deleted:
>>>
>>>   5 vlog_abort                        at lib/vlog.c:1325
>>>   6 ovs_assert_failure                at lib/util.c:90
>>>   7 ovsdb_idl_txn_write__.constprop.0 at lib/ovsdb-idl.c:3650
>>>   8 ovsdb_idl_txn_write               at lib/ovsdb-idl.c:3742
>>>   9 sbrec_port_binding_set_up         at lib/ovn-sb-idl.c:39665
>>>  10 port_binding_set_down             at controller/binding.c:3700
>>>  11 if_status_mgr_update              at controller/if-status.c:645
>>>  12 main                              at controller/ovn-controller.c:7544
>>>
>>>   7 ovsdb_idl_txn_write__.constprop.0 at lib/ovsdb-idl.c:3650
>>>     3650        ovs_assert(row->new_datum != NULL);
>>>
>>> Can be easily reproduced with ovs-vsctl:
>>>
>>>  $ ovs-vsctl add-br br-int
>>>  $ ovs-vsctl del-br br-int \
>>>      -- set bridge $(ovs-vsctl get bridge br-int _uuid) other-config:a=b
>>>    ovs-vsctl: lib/ovsdb-idl.c:2673:
>>>      assertion row->new_datum != NULL failed in ovsdb_idl_read()
>>>    Aborted (core dumped)
>>>
>>> Fix that by adding an extra check for row existence like in IDL
>>> iterators, so deleted or orphan rows can no longer be found.
>>>
>>> Fixes: 979821c0a6b0 ("ovsdb-idl: Allow clients to modify records without 
>>> using structs.")
>>> Reported-by: Dumitru Ceara <[email protected]>
>>> Signed-off-by: Ilya Maximets <[email protected]>
>>
> 
> Hi Ilya, Eelco,
> 
>> Thanks Ilya, the change looks good to me.
>>
>> Acked-by: Eelco Chaudron <[email protected]>
>>
> 
> Same here, the change looks good to me and I've been testing this with
> OVN, OVN-kubernetes, and OpenShift CI and it seems to work fine:
> 
> Acked-by: Dumitru Ceara <[email protected]>

Thanks, Eelco and Dumitru!
Applied and backported down to 3.3.

Best regards, Ilya Maximets.
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to