From 3f3630e7ed613e4093173039a917d6958e332bae Mon Sep 17 00:00:00 2001 From: Dumitru Ceara Date: Wed, 6 Jan 2021 11:53:14 +0100 Subject: [PATCH] binding: Do not clear container lbinding->pb when parent is deleted. When a parent Port_Binding is deleted we shouldn't clear the children's 'pb' field. Container port bindings have their own Port_Binding SB record so the child_lbinding->pb field should be cleared only when their corresponding SB record is deleted. Whithout this fix when a parent Port_Binding "remove" followed by "add" operations are received in the same iteration in ovn-controller, consider_container_lport() can be called with "pb == NULL" causing a crash. Fixes: 354bdba51abf ("ovn-controller: I-P for SB port binding and OVS interface in runtime_data.") Signed-off-by: Dumitru Ceara Signed-off-by: Numan Siddique (cherry-picked from master commit d3245f69dd6ec613ceb193f728946f7e3b9b3de3) --- controller/binding.c | 3 +-- tests/ovn.at | 7 +++++++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/controller/binding.c b/controller/binding.c index cb60c5d67a..e632203f2b 100644 --- a/controller/binding.c +++ b/controller/binding.c @@ -958,8 +958,7 @@ release_local_binding_children(const struct sbrec_chassis *chassis_rec, } } - /* Clear the local bindings' 'pb' and 'iface'. */ - l->pb = NULL; + /* Clear the local bindings' 'iface'. */ l->iface = NULL; } diff --git a/tests/ovn.at b/tests/ovn.at index 07eb952a35..700e5be9ac 100644 --- a/tests/ovn.at +++ b/tests/ovn.at @@ -8778,6 +8778,13 @@ OVS_WAIT_UNTIL([test xup = x$(ovn-nbctl lsp-get-up vm1)]) OVS_WAIT_UNTIL([test xup = x$(ovn-nbctl lsp-get-up foo1)]) OVS_WAIT_UNTIL([test xup = x$(ovn-nbctl lsp-get-up bar1)]) +# Move VM1 to a new logical switch. +ovn-nbctl ls-add mgmt2 +ovn-nbctl lsp-del vm1 -- lsp-add mgmt2 vm1 +OVS_WAIT_UNTIL([test xup = x$(ovn-nbctl lsp-get-up vm1)]) +OVS_WAIT_UNTIL([test xup = x$(ovn-nbctl lsp-get-up foo1)]) +OVS_WAIT_UNTIL([test xup = x$(ovn-nbctl lsp-get-up bar1)]) + as hv1 ovs-vsctl del-port vm1 OVS_WAIT_UNTIL([test xdown = x$(ovn-nbctl lsp-get-up vm1)]) OVS_WAIT_UNTIL([test xdown = x$(ovn-nbctl lsp-get-up foo1)])