nvme: fix regression upon hot device removal and insertion
authorSagi Grimberg <sagi@grimberg.me>
Wed, 10 Jul 2019 16:31:31 +0000 (09:31 -0700)
committerChristoph Hellwig <hch@lst.de>
Wed, 10 Jul 2019 16:36:16 +0000 (09:36 -0700)
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>
drivers/nvme/host/core.c

index f4340dc..3077cd4 100644 (file)
@@ -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) {