From: Geliang Tang <tanggeliang@xxxxxxxxxx> tls_sw doesn't work for sk_redirect in nonblock mode, sk_msg_recvmsg() returns 0 in that case in tls_sw_recvmsg(). This patch fixes this by using "continue" to receive msg again instead of ending it if strp isn't ready and rx_list is empty. Signed-off-by: Geliang Tang <tanggeliang@xxxxxxxxxx> --- net/tls/tls_sw.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/net/tls/tls_sw.c b/net/tls/tls_sw.c index 305a412785f5..ae8bbe7dc8ec 100644 --- a/net/tls/tls_sw.c +++ b/net/tls/tls_sw.c @@ -2017,6 +2017,9 @@ int tls_sw_recvmsg(struct sock *sk, len -= chunk; continue; } + if (!chunk && !tls_strp_msg_ready(ctx) && + skb_queue_empty_lockless(&ctx->rx_list)) + continue; } goto recv_end; } -- 2.43.0