From: keith.busch@intel.com (Keith Busch)
Subject: [PATCH 2/5] nvme/pci: Cancel work after watchdog disabled
Date: Fri, 10 Feb 2017 18:15:50 -0500 [thread overview]
Message-ID: <1486768553-13738-3-git-send-email-keith.busch@intel.com> (raw)
In-Reply-To: <1486768553-13738-1-git-send-email-keith.busch@intel.com>
The driver had been flushing the work prior to uninitializing the
controller, hoping the work would not get restarted. If controller
failure or IO time occurs when tearing down the request queues, the
watchdog timer may queue another reset.
We want to make sure that reset work is not running to prevent use after
free errors accessing the device being torn down, so this patch cancels
the reset work only after we know it can never be started again.
Signed-off-by: Keith Busch <keith.busch at intel.com>
---
drivers/nvme/host/pci.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/nvme/host/pci.c b/drivers/nvme/host/pci.c
index 9126637..52cca9f 100644
--- a/drivers/nvme/host/pci.c
+++ b/drivers/nvme/host/pci.c
@@ -1677,6 +1677,7 @@ static void nvme_dev_disable(struct nvme_dev *dev, bool shutdown)
u32 csts = -1;
del_timer_sync(&dev->watchdog_timer);
+ cancel_work_sync(&dev->reset_work);
mutex_lock(&dev->shutdown_lock);
if (pci_is_enabled(to_pci_dev(dev->dev))) {
@@ -2002,7 +2003,6 @@ static void nvme_remove(struct pci_dev *pdev)
nvme_dev_disable(dev, false);
}
- flush_work(&dev->reset_work);
nvme_uninit_ctrl(&dev->ctrl);
nvme_dev_disable(dev, true);
nvme_dev_remove_admin(dev);
--
1.8.3.1
next prev parent reply other threads:[~2017-02-10 23:15 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-02-10 23:15 [PATCH 0/5] NVMe pci fixes, for-4.11 Keith Busch
2017-02-10 23:15 ` [PATCH 1/5] nvme/pci: Disable on removal when disconnected Keith Busch
2017-02-13 10:18 ` Johannes Thumshirn
2017-02-13 13:51 ` Christoph Hellwig
2017-02-10 23:15 ` Keith Busch [this message]
2017-02-13 10:25 ` [PATCH 2/5] nvme/pci: Cancel work after watchdog disabled Johannes Thumshirn
2017-02-13 13:51 ` Christoph Hellwig
2017-02-10 23:15 ` [PATCH 3/5] nvme/core: Fix race kicking freed request_queue Keith Busch
2017-02-13 10:33 ` Johannes Thumshirn
2017-02-13 13:53 ` Christoph Hellwig
2017-02-10 23:15 ` [PATCH 4/5] nvme/pci: No special case for queue busy on IO Keith Busch
2017-02-13 13:53 ` Christoph Hellwig
2017-02-10 23:15 ` [PATCH 5/5] nvme/pci: Complete all stuck requests Keith Busch
2017-02-15 9:50 ` Sagi Grimberg
2017-02-15 15:46 ` Keith Busch
2017-02-15 16:04 ` Marc MERLIN
2017-02-15 17:36 ` J Freyensee
2017-02-16 9:12 ` Sagi Grimberg
2017-02-16 22:51 ` Keith Busch
2017-02-17 8:25 ` Christoph Hellwig
2017-02-15 18:14 ` Marc MERLIN
2017-12-14 3:36 ` Marc MERLIN
2018-02-28 2:22 ` Marc MERLIN
2017-02-17 15:27 ` Christoph Hellwig
2017-02-17 16:33 ` Keith Busch
2017-02-20 10:05 ` Christoph Hellwig
2017-02-21 15:57 ` Keith Busch
2017-02-22 7:17 ` Christoph Hellwig
2017-02-22 14:45 ` Keith Busch
2017-02-23 15:06 ` Christoph Hellwig
2017-02-23 15:21 ` Keith Busch
2017-02-23 15:16 ` Christoph Hellwig
2017-02-21 21:55 ` Sagi Grimberg
2017-02-21 23:26 ` Keith Busch
2017-02-15 9:40 ` [PATCH 0/5] NVMe pci fixes, for-4.11 Sagi Grimberg
[not found] <20170313153319.fmy6ww72fjtx74xq@merlins.org>
[not found] ` <20170313143649.GC6994@localhost.localdomain>
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1486768553-13738-3-git-send-email-keith.busch@intel.com \
--to=keith.busch@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.