diff --git a/net/tls/tls_main.c b/net/tls/tls_main.c
index da176411c1b5fdb418ad8d78b9f5b1e7a6cd4d9c..46bd5f26338bfb7a9418df016fbe56e7ff5ae84c 100644
--- a/net/tls/tls_main.c
+++ b/net/tls/tls_main.c
@@ -921,6 +921,9 @@ static void tls_update(struct sock *sk, struct proto *p,
 {
 	struct tls_context *ctx;
 
+	if (sk->sk_prot == p)
+		return;
+
 	ctx = tls_get_ctx(sk);
 	if (likely(ctx)) {
 		ctx->sk_write_space = write_space;