Commit
7d170098 (ofproto-dpif-upcall: Remove the flow_dumper thread.)
initialized the memory barrier inside the udpif_start_threads() function.
However, the udpif_start_threads() function does not check the number of
revalidator threads specified in udpif. So, when the number is zero, it
causes the error in barrier initialization. This could happen when the
other_config:flow-restore-wait is set and the udpif_flush() is called.
This commit fixes the issue, by checking the specified number of threads
in udpif_start_threads().
Reported-by: Gurucharan Shetty <gshetty@nicira.com>
Signed-off-by: Alex Wang <alexw@nicira.com>
Acked-by: Gurucharan Shetty <gshetty@nicira.com>
udpif_start_threads(struct udpif *udpif, size_t n_handlers,
size_t n_revalidators)
{
udpif_start_threads(struct udpif *udpif, size_t n_handlers,
size_t n_revalidators)
{
- if (udpif && (!udpif->handlers && !udpif->revalidators)) {
+ if (udpif && n_handlers && n_revalidators) {
size_t i;
udpif->n_handlers = n_handlers;
size_t i;
udpif->n_handlers = n_handlers;