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 f4340dc1d39925acad57fd8079b5ef0ebb606501..3077cd4d75bfb829990123962d5deb1d7b32b1c2 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) {