summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSagi Grimberg2019-07-10 18:31:31 +0200
committerChristoph Hellwig2019-07-10 18:36:16 +0200
commit420dc733f980246f2179e0144f9cedab9ad4a91e (patch)
treebc7212cd4ffbe70e7226b432ff12816f7ac7f478
parentnvme-fc: fix module unloads while lports still pending (diff)
downloadkernel-qcow2-linux-420dc733f980246f2179e0144f9cedab9ad4a91e.tar.gz
kernel-qcow2-linux-420dc733f980246f2179e0144f9cedab9ad4a91e.tar.xz
kernel-qcow2-linux-420dc733f980246f2179e0144f9cedab9ad4a91e.zip
nvme: fix regression upon hot device removal and insertion
When we validate the new controller id, we want to skip controllers that are either deleting or dead. Fix the check to do that and not on the newly added controller. Fixes: 1b1031ca63b2 ("nvme: validate cntlid during controller initialisation") Reported-by: Jon Derrick <jonathan.derrick@intel.com> Tested-by: Jon Derrick <jonathan.derrick@intel.com> Signed-off-by: Sagi Grimberg <sagi@grimberg.me> Signed-off-by: Christoph Hellwig <hch@lst.de>
-rw-r--r--drivers/nvme/host/core.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c
index f4340dc1d399..3077cd4d75bf 100644
--- a/drivers/nvme/host/core.c
+++ b/drivers/nvme/host/core.c
@@ -2416,8 +2416,8 @@ static bool nvme_validate_cntlid(struct nvme_subsystem *subsys,
lockdep_assert_held(&nvme_subsystems_lock);
list_for_each_entry(tmp, &subsys->ctrls, subsys_entry) {
- if (ctrl->state == NVME_CTRL_DELETING ||
- ctrl->state == NVME_CTRL_DEAD)
+ if (tmp->state == NVME_CTRL_DELETING ||
+ tmp->state == NVME_CTRL_DEAD)
continue;
if (tmp->cntlid == ctrl->cntlid) {