linux-nvme.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 1/2] NVMe: Lock out shutdown during pci init
@ 2016-02-11 23:00 Keith Busch
  2016-02-11 23:00 ` [PATCH 2/2] NVMe: NULL pointer check for admin queues Keith Busch
  2016-02-13  9:58 ` [PATCH 1/2] NVMe: Lock out shutdown during pci init Christoph Hellwig
  0 siblings, 2 replies; 8+ messages in thread
From: Keith Busch @ 2016-02-11 23:00 UTC (permalink / raw)


An unexpected driver unbind needs to be prevented from unmapping the
pci nvme registers while they're being initialized.

Signed-off-by: Keith Busch <keith.busch at intel.com>
---
 drivers/nvme/host/pci.c | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/drivers/nvme/host/pci.c b/drivers/nvme/host/pci.c
index 1b0e447..24a7972 100644
--- a/drivers/nvme/host/pci.c
+++ b/drivers/nvme/host/pci.c
@@ -1927,13 +1927,19 @@ static void nvme_reset_work(struct work_struct *work)
 
 	set_bit(NVME_CTRL_RESETTING, &dev->flags);
 
+	/*
+	 * Lock out shutdown so an unexpected driver removal won't unmap
+	 * registers while reset work is setting them up.
+	 */
+	mutex_lock(&dev->shutdown_lock);
 	result = nvme_dev_map(dev);
 	if (result)
-		goto out;
+		goto out_unlock;
 
 	result = nvme_configure_admin_queue(dev);
 	if (result)
-		goto out;
+		goto out_unlock;
+	mutex_unlock(&dev->shutdown_lock);
 
 	nvme_init_queue(dev->queues[0], 0);
 	result = nvme_alloc_admin_tags(dev);
@@ -1970,6 +1976,8 @@ static void nvme_reset_work(struct work_struct *work)
 	clear_bit(NVME_CTRL_RESETTING, &dev->flags);
 	return;
 
+ out_unlock:
+	mutex_unlock(&dev->shutdown_lock);
  out:
 	nvme_remove_dead_ctrl(dev, result);
 }
-- 
2.6.2.307.g37023ba

^ permalink raw reply related	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2016-02-22  8:44 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-02-11 23:00 [PATCH 1/2] NVMe: Lock out shutdown during pci init Keith Busch
2016-02-11 23:00 ` [PATCH 2/2] NVMe: NULL pointer check for admin queues Keith Busch
2016-02-13  9:59   ` Christoph Hellwig
2016-02-22  8:44   ` Sagi Grimberg
2016-02-13  9:58 ` [PATCH 1/2] NVMe: Lock out shutdown during pci init Christoph Hellwig
2016-02-16 18:40   ` Keith Busch
2016-02-17  7:59     ` Christoph Hellwig
2016-02-17 13:40       ` Keith Busch

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).