diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c
index 91c1bd659947eb259292f01c4f3b86e2ec70cb7f..f2adea96b04cd9605158854dbfe16200b0b63a8b 100644
--- a/drivers/nvme/host/core.c
+++ b/drivers/nvme/host/core.c
@@ -3642,6 +3642,8 @@ static void nvme_alloc_ns(struct nvme_ctrl *ctrl, unsigned nsid)
 
 	return;
  out_put_disk:
+	/* prevent double queue cleanup */
+	ns->disk->queue = NULL;
 	put_disk(ns->disk);
  out_unlink_ns:
 	mutex_lock(&ctrl->subsys->lock);