Skip to content

Commit 98a4ab4

Browse files
authored
Merge pull request #1182 from tempesta-tech/ak-clear-tls-skb-list
Free all queued skbs in IO TLS contexts on connection drop handler.
2 parents c934a29 + 3200afc commit 98a4ab4

File tree

1 file changed

+9
-1
lines changed

1 file changed

+9
-1
lines changed

tempesta_fw/tls.c

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ tfw_tls_msg_process(void *conn, TfwFsmData *data)
103103
r);
104104
case T_DROP:
105105
spin_unlock(&tls->lock);
106-
__kfree_skb(skb);
106+
/* The skb is freed in tfw_tls_conn_dtor(). */
107107
return r;
108108
case T_POSTPONE:
109109
/*
@@ -495,8 +495,16 @@ tfw_tls_send(TlsCtx *tls, struct sg_table *sgt, bool close)
495495
static void
496496
tfw_tls_conn_dtor(void *c)
497497
{
498+
struct sk_buff *skb;
498499
TlsCtx *tls = tfw_tls_context(c);
499500

501+
if (tls) {
502+
while ((skb = ss_skb_dequeue(&tls->io_in.skb_list)))
503+
kfree_skb(skb);
504+
while ((skb = ss_skb_dequeue(&tls->io_out.skb_list)))
505+
kfree_skb(skb);
506+
}
507+
500508
ttls_ctx_clear(tls);
501509
tfw_cli_conn_release((TfwCliConn *)c);
502510
}

0 commit comments

Comments
 (0)