Flow offloading thread uses concurrent hash maps which are
based on rcu protected variables. It must use them while in
active state. Working in a quiescent state could cause
segmentation faults because of possible cmap internal
structure changes.
Fixes: 02bb2824e51d ("dpif-netdev: do hw flow offload in a thread")
Signed-off-by: Ilya Maximets <[email protected]>
---
lib/dpif-netdev.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/lib/dpif-netdev.c b/lib/dpif-netdev.c
index 5839f2375..8136b0389 100644
--- a/lib/dpif-netdev.c
+++ b/lib/dpif-netdev.c
@@ -2396,6 +2396,7 @@ dp_netdev_flow_offload_main(void *data OVS_UNUSED)
ovsrcu_quiesce_start();
ovs_mutex_cond_wait(&dp_flow_offload.cond,
&dp_flow_offload.mutex);
+ ovsrcu_quiesce_end();
}
list = ovs_list_pop_front(&dp_flow_offload.list);
offload = CONTAINER_OF(list, struct dp_flow_offload_item, node);
--
2.17.1
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev