From: Amaury Denoyelle Date: Mon, 1 Jul 2024 13:36:33 +0000 (+0200) Subject: MINOR: quic: ensure quic_conn is never removed on thread affinity rebind X-Git-Tag: v3.1-dev3~22 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=bfdf145859d80dc3357f6f67e96c8cbbe8280804;p=thirdparty%2Fhaproxy.git MINOR: quic: ensure quic_conn is never removed on thread affinity rebind On accept, quic_conn instance is migrated from its original thread to a new one. This operation is conducted in two steps, on the original than the new thread instance. During the interval, quic_conn is artificially rendered inactive. It must never be accessed nor removed until migration is completed via qc_finalize_affinity_rebind(). This new BUG_ON() will enforce that removal is never conducted until migration is completed. --- diff --git a/src/quic_conn.c b/src/quic_conn.c index 595dcf0448..46c74d9436 100644 --- a/src/quic_conn.c +++ b/src/quic_conn.c @@ -1314,6 +1314,9 @@ void quic_conn_release(struct quic_conn *qc) if (!qc) goto leave; + /* Must not delete a quic_conn if thread affinity rebind in progress. */ + BUG_ON(qc->flags & QUIC_FL_CONN_AFFINITY_CHANGED); + /* We must not free the quic-conn if the MUX is still allocated. */ BUG_ON(qc->mux_state == QC_MUX_READY);