Limit the maximum number of ack ranges to QUIC_MAX_ACK_RANGES(32).
Must be backported to 2.6 and 2.7.
uint64_t last;
};
+/* The maximum number of ack ranges to be built in ACK frames */
+#define QUIC_MAX_ACK_RANGES 32
+
/* Structure to maintain a set of ACK ranges to be used to build ACK frames. */
struct quic_arngs {
/* ebtree of ACK ranges organized by their first value. */
TRACE_ENTER(QUIC_EV_CONN_RXPKT, qc);
+ if (arngs->sz >= QUIC_MAX_ACK_RANGES) {
+ struct eb64_node *last;
+
+ last = eb64_last(&arngs->root);
+ BUG_ON(last == NULL);
+ eb64_delete(last);
+ pool_free(pool_head_quic_arng, last);
+ arngs->sz--;
+ }
+
new_ar = pool_alloc(pool_head_quic_arng);
if (!new_ar) {
TRACE_ERROR("ack range allocation failed", QUIC_EV_CONN_RXPKT, qc);