[PATCH] nvmet-tcp: fix callback lock for TLS handshake
Maurizio Lombardi
mlombard at bsdbackstore.eu
Fri Jul 4 07:48:14 PDT 2025
On Fri Jul 4, 2025 at 4:44 PM CEST, Maurizio Lombardi wrote:
> When restoring the default socket callbacks during a
> TLS handshake, we need to acquire a write lock on sk_callback_lock.
> Previously, a read lock was used, which is insufficient for
> modifying sk_user_data and sk_data_ready.
I forgot the Fixes tag
Fixes: 675b453e0241 ("nvmet-tcp: enable TLS handshake upcall")
Maurizio
>
> Signed-off-by: Maurizio Lombardi <mlombard at redhat.com>
> ---
> drivers/nvme/target/tcp.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/nvme/target/tcp.c b/drivers/nvme/target/tcp.c
> index 688033b88d38..470bf37e5a63 100644
> --- a/drivers/nvme/target/tcp.c
> +++ b/drivers/nvme/target/tcp.c
> @@ -1928,10 +1928,10 @@ static void nvmet_tcp_alloc_queue(struct nvmet_tcp_port *port,
> struct sock *sk = queue->sock->sk;
>
> /* Restore the default callbacks before starting upcall */
> - read_lock_bh(&sk->sk_callback_lock);
> + write_lock_bh(&sk->sk_callback_lock);
> sk->sk_user_data = NULL;
> sk->sk_data_ready = port->data_ready;
> - read_unlock_bh(&sk->sk_callback_lock);
> + write_unlock_bh(&sk->sk_callback_lock);
> if (!nvmet_tcp_try_peek_pdu(queue)) {
> if (!nvmet_tcp_tls_handshake(queue))
> return;
More information about the Linux-nvme
mailing list