[ovs-dev] [PATCH] ofproto-dpif-upcall: Fix a bug.

Alex Wang alexw at nicira.com
Fri Apr 25 18:04:21 UTC 2014


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 at nicira.com>
Signed-off-by: Alex Wang <alexw at nicira.com>
---
 ofproto/ofproto-dpif-upcall.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/ofproto/ofproto-dpif-upcall.c b/ofproto/ofproto-dpif-upcall.c
index 84afc56..717563a 100644
--- a/ofproto/ofproto-dpif-upcall.c
+++ b/ofproto/ofproto-dpif-upcall.c
@@ -342,7 +342,7 @@ static void
 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;
-- 
1.7.9.5




More information about the dev mailing list