From: Harshit Mogalapalli <harshit.m.mogalapalli@oracle.com>
To: Artem Dinaburg <artem@trailofbits.com>, stable@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Sasha Levin <sashal@kernel.org>,
Chunguang Xu <chunguang.xu@shopee.com>,
Sagi Grimberg <sagi@grimberg.me>,
Chaitanya Kulkarni <kch@nvidia.com>,
Christoph Hellwig <hch@lst.de>, Keith Busch <kbusch@kernel.org>,
Jens Axboe <axboe@kernel.dk>,
linux-nvme@lists.infradead.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 6.1.y] nvme-fabrics: use reserved tag for reg read/write command
Date: Sat, 3 Oct 2026 02:42:52 +0530 [thread overview]
Message-ID: <bf8ac5bb-91f0-410a-ac00-535a2d005e72@oracle.com> (raw)
In-Reply-To: <20261002204646.26451-1-artem@trailofbits.com>
Hi Artem,
On 03/10/26 2:16 am, Artem Dinaburg wrote:
> From: Chunguang Xu <chunguang.xu@shopee.com>
>
> [ Upstream commit 7dc3bfcb4c9cc58970fff6aaa48172cb224d85aa ]
>
> In some scenarios, if too many commands are issued by nvme command in
> the same time by user tasks, this may exhaust all tags of admin_q. If
> a reset (nvme reset or IO timeout) occurs before these commands finish,
> reconnect routine may fail to update nvme regs due to insufficient tags,
> which will cause kernel hang forever. In order to workaround this issue,
> maybe we can let reg_read32()/reg_read64()/reg_write32() use reserved
> tags. This maybe safe for nvmf:
>
> 1. For the disable ctrl path, we will not issue connect command
> 2. For the enable ctrl / fw activate path, since connect and reg_xx()
> are called serially.
>
> So the reserved tags may still be enough while reg_xx() use reserved tags.
>
> [ Backport to 6.1.y: used the older BLK_MQ_REQ_RESERVED request flag. ]
>
^^ Usually this line goes after upstream commit message.
> Signed-off-by: Chunguang Xu <chunguang.xu@shopee.com>
> Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
> Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com>
> Reviewed-by: Christoph Hellwig <hch@lst.de>
> Signed-off-by: Keith Busch <kbusch@kernel.org>
--> Here.
thanks,
Harshit> Assisted-by: LLM
> Signed-off-by: Artem Dinaburg <artem@trailofbits.com>
> ---
> Hi Greg, Sasha, and nvme maintainers,
>
> I am working through the small CVE backports still missing from 6.1.y.
> This one addresses CVE-2024-41082. It reserves a request tag for
> controller-register I/O during reconnect and reset.
>
> The corresponding 6.6.y backport is already in the 6.6.y stable queue.
> The fix is already present in 6.12.y, 6.18.y, and 7.2.y, but not
> in 6.1.y.
> The target-specific adjustment is recorded in the bracketed note above.
>
> Could you please queue it for 6.1.y?
>
> CVE: CVE-2024-41082
> Upstream: 7dc3bfcb4c9cc58970fff6aaa48172cb224d85aa
>
> AI assistance: An LLM helped identify, adapt, and validate this backport; I
> reviewed the resulting code and validation evidence.
>
> Thanks,
> Artem Dinaburg
>
> drivers/nvme/host/fabrics.c | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/nvme/host/fabrics.c b/drivers/nvme/host/fabrics.c
> index ffe433c4708941..2d0dace26d8f78 100644
> --- a/drivers/nvme/host/fabrics.c
> +++ b/drivers/nvme/host/fabrics.c
> @@ -153,7 +153,7 @@ int nvmf_reg_read32(struct nvme_ctrl *ctrl, u32 off, u32 *val)
> cmd.prop_get.offset = cpu_to_le32(off);
>
> ret = __nvme_submit_sync_cmd(ctrl->fabrics_q, &cmd, &res, NULL, 0,
> - NVME_QID_ANY, 0, 0);
> + NVME_QID_ANY, 0, BLK_MQ_REQ_RESERVED);
>
> if (ret >= 0)
> *val = le64_to_cpu(res.u64);
> @@ -199,7 +199,7 @@ int nvmf_reg_read64(struct nvme_ctrl *ctrl, u32 off, u64 *val)
> cmd.prop_get.offset = cpu_to_le32(off);
>
> ret = __nvme_submit_sync_cmd(ctrl->fabrics_q, &cmd, &res, NULL, 0,
> - NVME_QID_ANY, 0, 0);
> + NVME_QID_ANY, 0, BLK_MQ_REQ_RESERVED);
>
> if (ret >= 0)
> *val = le64_to_cpu(res.u64);
> @@ -244,7 +244,7 @@ int nvmf_reg_write32(struct nvme_ctrl *ctrl, u32 off, u32 val)
> cmd.prop_set.value = cpu_to_le64(val);
>
> ret = __nvme_submit_sync_cmd(ctrl->fabrics_q, &cmd, NULL, NULL, 0,
> - NVME_QID_ANY, 0, 0);
> + NVME_QID_ANY, 0, BLK_MQ_REQ_RESERVED);
> if (unlikely(ret))
> dev_err(ctrl->device,
> "Property Set error: %d, offset %#x\n",
prev parent reply other threads:[~2026-10-02 21:13 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-02 20:46 Artem Dinaburg
2026-10-02 21:12 ` Harshit Mogalapalli [this message]
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=bf8ac5bb-91f0-410a-ac00-535a2d005e72@oracle.com \
--to=harshit.m.mogalapalli@oracle.com \
--cc=artem@trailofbits.com \
--cc=axboe@kernel.dk \
--cc=chunguang.xu@shopee.com \
--cc=gregkh@linuxfoundation.org \
--cc=hch@lst.de \
--cc=kbusch@kernel.org \
--cc=kch@nvidia.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-nvme@lists.infradead.org \
--cc=sagi@grimberg.me \
--cc=sashal@kernel.org \
--cc=stable@vger.kernel.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®