If ukey_acquire() returns ENOENT, then it is unable to locate the ukey
corresponding to the flow and the flow has disappeared since it was
dumped. Don't bother deleting the flow in this case, as it will fail.

Signed-off-by: Joe Stringer <[email protected]>
---
 ofproto/ofproto-dpif-upcall.c |    4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/ofproto/ofproto-dpif-upcall.c b/ofproto/ofproto-dpif-upcall.c
index 89de528..f0cd4cc 100644
--- a/ofproto/ofproto-dpif-upcall.c
+++ b/ofproto/ofproto-dpif-upcall.c
@@ -1857,7 +1857,9 @@ revalidate(struct revalidator *revalidator)
                     COVERAGE_INC(upcall_ukey_contention);
                 } else {
                     log_unexpected_flow(f, error);
-                    delete_op_init__(&ops[n_ops++], f);
+                    if (error != ENOENT) {
+                        delete_op_init__(&ops[n_ops++], f);
+                    }
                 }
                 continue;
             }
-- 
1.7.10.4

_______________________________________________
dev mailing list
[email protected]
http://openvswitch.org/mailman/listinfo/dev

Reply via email to