From: Yunjian Wang <[email protected]> The rev_conn need will be removed, only when conn_type is CT_CONN_TYPE_UN_NAT. This crash will be triggered when remove conn in ct-clean thread.
Reported-by: Lili Huang <[email protected]> Signed-off-by: Yunjian Wang <[email protected]> --- lib/conntrack.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/lib/conntrack.c b/lib/conntrack.c index 419cb1d..c1adb56 100644 --- a/lib/conntrack.c +++ b/lib/conntrack.c @@ -684,9 +684,10 @@ nat_clean(struct conntrack *ct, struct conn *conn, /* In the unlikely event, rev conn was recreated, then skip * rev_conn cleanup. */ - if (rev_conn && (!nat_conn_key_node || - conn_key_cmp(&nat_conn_key_node->value, - &rev_conn->rev_key))) { + if (rev_conn && + (rev_conn->conn_type == CT_CONN_TYPE_UN_NAT) && + (!nat_conn_key_node || conn_key_cmp(&nat_conn_key_node->value, + &rev_conn->rev_key))) { hmap_remove(&ct->buckets[bucket_rev_conn].connections, &rev_conn->node); free(rev_conn); -- 1.8.3.1 _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
