diff --git a/net/tls/tls_sw.c b/net/tls/tls_sw.c index 2fe9e2cf86599ad28162c8c89c28298131e83f3b..845c628ac1b2717f6c9a4ef855c64924f0c847a0 100644 --- a/net/tls/tls_sw.c +++ b/net/tls/tls_sw.c @@ -1295,6 +1295,12 @@ static struct sk_buff *tls_wait_data(struct sock *sk, struct sk_psock *psock, return NULL; } + if (!skb_queue_empty(&sk->sk_receive_queue)) { + __strp_unpause(&ctx->strp); + if (ctx->recv_pkt) + return ctx->recv_pkt; + } + if (sk->sk_shutdown & RCV_SHUTDOWN) return NULL;