Unverified Commit c238ff21 authored by openeuler-ci-bot's avatar openeuler-ci-bot Committed by Gitee
Browse files
parents 418d2110 55597bed
Loading
Loading
Loading
Loading
+9 −1
Original line number Diff line number Diff line
@@ -708,9 +708,17 @@ struct tls_context *tls_ctx_create(struct sock *sk)
		return NULL;

	mutex_init(&ctx->tx_lock);
	rcu_assign_pointer(icsk->icsk_ulp_data, ctx);
	ctx->sk_proto = READ_ONCE(sk->sk_prot);
	ctx->sk = sk;
	/* Release semantic of rcu_assign_pointer() ensures that
	 * ctx->sk_proto is visible before changing sk->sk_prot in
	 * update_sk_prot(), and prevents reading uninitialized value in
	 * tls_{getsockopt, setsockopt}. Note that we do not need a
	 * read barrier in tls_{getsockopt,setsockopt} as there is an
	 * address dependency between sk->sk_proto->{getsockopt,setsockopt}
	 * and ctx->sk_proto.
	 */
	rcu_assign_pointer(icsk->icsk_ulp_data, ctx);
	return ctx;
}