From: Damien Le Moal <dlemoal@kernel.org>
To: Wilfred Mallawa <wilfred.opensource@gmail.com>,
Keith Busch <kbusch@kernel.org>, Jens Axboe <axboe@kernel.dk>,
Christoph Hellwig <hch@lst.de>, Sagi Grimberg <sagi@grimberg.me>
Cc: linux-nvme@lists.infradead.org, linux-kernel@vger.kernel.org,
alistair.francis@wdc.com,
Wilfred Mallawa <wilfred.mallawa@wdc.com>
Subject: Re: [PATCH] nvme/tcp: handle rejected keys for secure concatnation
Date: Tue, 12 May 2026 08:12:08 +0900 [thread overview]
Message-ID: <f8c4bebd-464f-4a1f-9d11-5f3a6b2b3b30@kernel.org> (raw)
In-Reply-To: <20260511005454.2486599-2-wilfred.opensource@gmail.com>
On 5/11/26 09:54, Wilfred Mallawa wrote:
> From: Wilfred Mallawa <wilfred.mallawa@wdc.com>
>
In the title: s/concatnation/concatenation
> The NVMe-TCP specification [1] states that if the PSK retained or
> generated is not available on the subsystem, the TLS 1.3 handshake shall
> be aborted with an unknown_psk_identity alert and the connection be
> closed.
>
> Currently, when an unknown_psk_identity alert is sent from an endpoint,
> tlshd returns EACCES as the TLS error. On subsequent reconnection
> attempts, we fail with the same error because we keep attempting to
> connect with a stale key. This may occur if the endpoint experienced a
> full reset and lost its PSK.
>
> With support in tlshd to return -EKEYREJECTED when an unknown_psk_identity
> alert is received, the kernel can now detect this condition and revoke the
> current tls_key. This allows the subsequent reconnect to perform
> re-authentication via DHCHAP to generate a fresh PSK.
>
> [1] https://nvmexpress.org/wp-content/uploads/NVM-Express-TCP-Transport-Specification-Revision-1.1-2024.08.05-Ratified.pdf
>
> Signed-off-by: Wilfred Mallawa <wilfred.mallawa@wdc.com>
> ---
> drivers/nvme/host/tcp.c | 11 +++++++++++
> 1 file changed, 11 insertions(+)
>
> diff --git a/drivers/nvme/host/tcp.c b/drivers/nvme/host/tcp.c
> index 15d36d6a728e..eff68eb7a5fe 100644
> --- a/drivers/nvme/host/tcp.c
> +++ b/drivers/nvme/host/tcp.c
> @@ -1767,6 +1767,17 @@ static int nvme_tcp_start_tls(struct nvme_ctrl *nctrl,
> dev_err(nctrl->device,
> "queue %d: TLS handshake complete, error %d\n",
> qid, queue->tls_err);
> +
> + /*
> + * Key maybe stale, revoke it such that on a subsequent
* If the key is stale, revoke it...
> + * reconnect, we will generate a new PSK.
> + */
> + if (queue->tls_err == EKEYREJECTED && qid == 0 &&
> + nctrl->opts->concat && nctrl->opts->tls_key) {
> + nvme_auth_revoke_tls_key(nctrl);
> + dev_warn(nctrl->device,
> + "qid 0: revoking stale key\n");
> + }
> } else {
> dev_dbg(nctrl->device,
> "queue %d: TLS handshake complete\n", qid);
--
Damien Le Moal
Western Digital Research
next prev parent reply other threads:[~2026-05-11 23:12 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-05-11 0:54 [PATCH] nvme/tcp: handle rejected keys for secure concatnation Wilfred Mallawa
2026-05-11 6:20 ` Christoph Hellwig
2026-05-11 23:12 ` Damien Le Moal [this message]
2026-05-27 13:47 ` Hannes Reinecke
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=f8c4bebd-464f-4a1f-9d11-5f3a6b2b3b30@kernel.org \
--to=dlemoal@kernel.org \
--cc=alistair.francis@wdc.com \
--cc=axboe@kernel.dk \
--cc=hch@lst.de \
--cc=kbusch@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-nvme@lists.infradead.org \
--cc=sagi@grimberg.me \
--cc=wilfred.mallawa@wdc.com \
--cc=wilfred.opensource@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.