[ovs-dev] [patch v1 1/2] conntrack: Fix nat_clean.

Darrell Ball dlu998 at gmail.com
Wed Aug 29 02:37:21 UTC 2018


nat_clean has a defunct optimization for calculating a hash outside the
scope of a bucket lock; move the line into the scope of the lock.  Needs
backporting to 2.8.

Reported-at: https://mail.openvswitch.org/pipermail/ovs-dev/2018-August/351629.html
Fixes: 286de2729955 ("dpdk: Userspace Datapath: Introduce NAT Support.")
Signed-off-by: Darrell Ball <dlu998 at gmail.com>
---
 lib/conntrack.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/lib/conntrack.c b/lib/conntrack.c
index be8debb..44cb91b 100644
--- a/lib/conntrack.c
+++ b/lib/conntrack.c
@@ -778,10 +778,11 @@ nat_clean(struct conntrack *ct, struct conn *conn,
 {
     ct_rwlock_wrlock(&ct->resources_lock);
     nat_conn_keys_remove(&ct->nat_conn_keys, &conn->rev_key, ct->hash_basis);
-    ct_rwlock_unlock(&ct->resources_lock);
-    ct_lock_unlock(&ctb->lock);
     unsigned bucket_rev_conn =
         hash_to_bucket(conn_key_hash(&conn->rev_key, ct->hash_basis));
+    ct_rwlock_unlock(&ct->resources_lock);
+    ct_lock_unlock(&ctb->lock);
+
     ct_lock_lock(&ct->buckets[bucket_rev_conn].lock);
     ct_rwlock_wrlock(&ct->resources_lock);
     long long now = time_msec();
-- 
1.9.1



More information about the dev mailing list