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 <i.maxim...@samsung.com> --- 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 d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev