diff --git a/net/tls/tls_sw.c b/net/tls/tls_sw.c
index 4618f1c3113743b8b93f757bca303c8f91d95499..1f3d9789af30fb88cf9e7550b40dcda1e897e262 100644
--- a/net/tls/tls_sw.c
+++ b/net/tls/tls_sw.c
@@ -646,6 +646,9 @@ static struct sk_buff *tls_wait_data(struct sock *sk, int flags,
 			return NULL;
 		}
 
+		if (sk->sk_shutdown & RCV_SHUTDOWN)
+			return NULL;
+
 		if (sock_flag(sk, SOCK_DONE))
 			return NULL;