* [PATCH AUTOSEL 6.1 11/25] nvme-auth: unlock mutex in one place only
[not found] <20231128210750.875945-1-sashal@kernel.org>
@ 2023-11-28 21:07 ` Sasha Levin
2023-11-28 21:07 ` [PATCH AUTOSEL 6.1 12/25] nvme-auth: set explanation code for failure2 msgs Sasha Levin
2023-11-28 21:07 ` [PATCH AUTOSEL 6.1 13/25] nvme: catch errors from nvme_configure_metadata() Sasha Levin
2 siblings, 0 replies; 3+ messages in thread
From: Sasha Levin @ 2023-11-28 21:07 UTC (permalink / raw)
To: linux-kernel, stable
Cc: Mark O'Donovan, Christoph Hellwig, Sagi Grimberg,
Hannes Reinecke, Keith Busch, Sasha Levin, linux-nvme
From: Mark O'Donovan <shiftee@posteo.net>
[ Upstream commit 616add70bfdc0274a253e84fc78155c27aacde91 ]
Signed-off-by: Mark O'Donovan <shiftee@posteo.net>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
Reviewed-by: Hannes Reinecke <hare@suse.de>
Signed-off-by: Keith Busch <kbusch@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/nvme/host/auth.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/nvme/host/auth.c b/drivers/nvme/host/auth.c
index 9dfd3d0293054..7c9dfb420c464 100644
--- a/drivers/nvme/host/auth.c
+++ b/drivers/nvme/host/auth.c
@@ -758,6 +758,7 @@ static void nvme_queue_auth_work(struct work_struct *work)
dev_dbg(ctrl->device, "%s: qid %d host response\n",
__func__, chap->qid);
ret = nvme_auth_dhchap_setup_host_response(ctrl, chap);
+ mutex_unlock(&ctrl->dhchap_auth_mutex);
if (ret) {
chap->error = ret;
goto fail2;
--
2.42.0
^ permalink raw reply related [flat|nested] 3+ messages in thread
* [PATCH AUTOSEL 6.1 12/25] nvme-auth: set explanation code for failure2 msgs
[not found] <20231128210750.875945-1-sashal@kernel.org>
2023-11-28 21:07 ` [PATCH AUTOSEL 6.1 11/25] nvme-auth: unlock mutex in one place only Sasha Levin
@ 2023-11-28 21:07 ` Sasha Levin
2023-11-28 21:07 ` [PATCH AUTOSEL 6.1 13/25] nvme: catch errors from nvme_configure_metadata() Sasha Levin
2 siblings, 0 replies; 3+ messages in thread
From: Sasha Levin @ 2023-11-28 21:07 UTC (permalink / raw)
To: linux-kernel, stable
Cc: Mark O'Donovan, Hannes Reinecke, Sagi Grimberg, Keith Busch,
Sasha Levin, linux-nvme
From: Mark O'Donovan <shiftee@posteo.net>
[ Upstream commit 38ce1570e2c46e7e9af983aa337edd7e43723aa2 ]
Some error cases were not setting an auth-failure-reason-code-explanation.
This means an AUTH_Failure2 message will be sent with an explanation value
of 0 which is a reserved value.
Signed-off-by: Mark O'Donovan <shiftee@posteo.net>
Reviewed-by: Hannes Reinecke <hare@suse.de>
Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
Signed-off-by: Keith Busch <kbusch@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/nvme/host/auth.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/nvme/host/auth.c b/drivers/nvme/host/auth.c
index 7c9dfb420c464..d67076e98b4bc 100644
--- a/drivers/nvme/host/auth.c
+++ b/drivers/nvme/host/auth.c
@@ -835,6 +835,8 @@ static void nvme_queue_auth_work(struct work_struct *work)
}
fail2:
+ if (chap->status == 0)
+ chap->status = NVME_AUTH_DHCHAP_FAILURE_FAILED;
dev_dbg(ctrl->device, "%s: qid %d send failure2, status %x\n",
__func__, chap->qid, chap->status);
tl = nvme_auth_set_dhchap_failure2_data(ctrl, chap);
--
2.42.0
^ permalink raw reply related [flat|nested] 3+ messages in thread
* [PATCH AUTOSEL 6.1 13/25] nvme: catch errors from nvme_configure_metadata()
[not found] <20231128210750.875945-1-sashal@kernel.org>
2023-11-28 21:07 ` [PATCH AUTOSEL 6.1 11/25] nvme-auth: unlock mutex in one place only Sasha Levin
2023-11-28 21:07 ` [PATCH AUTOSEL 6.1 12/25] nvme-auth: set explanation code for failure2 msgs Sasha Levin
@ 2023-11-28 21:07 ` Sasha Levin
2 siblings, 0 replies; 3+ messages in thread
From: Sasha Levin @ 2023-11-28 21:07 UTC (permalink / raw)
To: linux-kernel, stable
Cc: Hannes Reinecke, Keith Busch, Sasha Levin, sagi, linux-nvme
From: Hannes Reinecke <hare@suse.de>
[ Upstream commit cd9aed606088d36a7ffff3e808db4e76b1854285 ]
nvme_configure_metadata() is issuing I/O, so we might incur an I/O
error which will cause the connection to be reset.
But in that case any further probing will race with reset and
cause UAF errors.
So return a status from nvme_configure_metadata() and abort
probing if there was an I/O error.
Signed-off-by: Hannes Reinecke <hare@suse.de>
Signed-off-by: Keith Busch <kbusch@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/nvme/host/core.c | 19 +++++++++++++------
1 file changed, 13 insertions(+), 6 deletions(-)
diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c
index 25ddfabc58f73..73cec036567d2 100644
--- a/drivers/nvme/host/core.c
+++ b/drivers/nvme/host/core.c
@@ -1845,16 +1845,18 @@ static int nvme_init_ms(struct nvme_ns *ns, struct nvme_id_ns *id)
return ret;
}
-static void nvme_configure_metadata(struct nvme_ns *ns, struct nvme_id_ns *id)
+static int nvme_configure_metadata(struct nvme_ns *ns, struct nvme_id_ns *id)
{
struct nvme_ctrl *ctrl = ns->ctrl;
+ int ret;
- if (nvme_init_ms(ns, id))
- return;
+ ret = nvme_init_ms(ns, id);
+ if (ret)
+ return ret;
ns->features &= ~(NVME_NS_METADATA_SUPPORTED | NVME_NS_EXT_LBAS);
if (!ns->ms || !(ctrl->ops->flags & NVME_F_METADATA_SUPPORTED))
- return;
+ return 0;
if (ctrl->ops->flags & NVME_F_FABRICS) {
/*
@@ -1863,7 +1865,7 @@ static void nvme_configure_metadata(struct nvme_ns *ns, struct nvme_id_ns *id)
* remap the separate metadata buffer from the block layer.
*/
if (WARN_ON_ONCE(!(id->flbas & NVME_NS_FLBAS_META_EXT)))
- return;
+ return 0;
ns->features |= NVME_NS_EXT_LBAS;
@@ -1890,6 +1892,7 @@ static void nvme_configure_metadata(struct nvme_ns *ns, struct nvme_id_ns *id)
else
ns->features |= NVME_NS_METADATA_SUPPORTED;
}
+ return 0;
}
static void nvme_set_queue_limits(struct nvme_ctrl *ctrl,
@@ -2063,7 +2066,11 @@ static int nvme_update_ns_info_block(struct nvme_ns *ns,
ns->lba_shift = id->lbaf[lbaf].ds;
nvme_set_queue_limits(ns->ctrl, ns->queue);
- nvme_configure_metadata(ns, id);
+ ret = nvme_configure_metadata(ns, id);
+ if (ret < 0) {
+ blk_mq_unfreeze_queue(ns->disk->queue);
+ goto out;
+ }
nvme_set_chunk_sectors(ns, id);
nvme_update_disk_info(ns->disk, ns, id);
--
2.42.0
^ permalink raw reply related [flat|nested] 3+ messages in thread
end of thread, other threads:[~2023-11-28 21:08 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <20231128210750.875945-1-sashal@kernel.org>
2023-11-28 21:07 ` [PATCH AUTOSEL 6.1 11/25] nvme-auth: unlock mutex in one place only Sasha Levin
2023-11-28 21:07 ` [PATCH AUTOSEL 6.1 12/25] nvme-auth: set explanation code for failure2 msgs Sasha Levin
2023-11-28 21:07 ` [PATCH AUTOSEL 6.1 13/25] nvme: catch errors from nvme_configure_metadata() Sasha Levin
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox