[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