From: Geliang Tang tanggeliang@kylinos.cn
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@kylinos.cn --- 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; }