Patch "nvme: protect against simultaneous shutdown invocations" has been added to the 4.4-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
nvme: protect against simultaneous shutdown invocations
to the 4.4-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
nvme-protect-against-simultaneous-shutdown-invocations.patch
and it can be found in the queue-4.4 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
77bf25ea70200cddf083f74b7f617e5f07fac8bdMon Sep 17 00:00:00 2001
From: Keith Busch <[email protected]>
Date: Thu, 26 Nov 2015 12:21:29 +0100
Subject: nvme: protect against simultaneous shutdown invocations
From: Keith Busch <[email protected]>
commit 77bf25ea70200cddf083f74b7f617e5f07fac8bd upstream.
[Back-ported to 4.4. The difference is the file location of the struct definition that's adding the mutex.
This fixes reported kernel panics in 4.4-stable from simultaneous controller resets that was never supposed to be allowed to happen.]
--- drivers/nvme/host/nvme.h | 2 ++ drivers/nvme/host/pci.c | 3 +++ 2 files changed, 5 insertions(+)
drivers/nvme/host/nvme.h +2 -0
@@ -14,6 +14,7 @@#ifndef _NVME_H#define _NVME_H +#include <linux/mutex.h> #include <linux/nvme.h> #include <linux/pci.h> #include <linux/kref.h>
@@ -62,6 +63,7 @@ struct nvme_dev {struct work_struct reset_work;struct work_struct probe_work;struct work_struct scan_work; +struct mutex shutdown_lock;char name[12 ];char serial[20 ];char model[40 ];
drivers/nvme/host/pci.c +3 -0
@@ -2954,6 +2954,7 @@ static void nvme_dev_shutdown(struct nvmnvme_dev_list_remove (dev); +mutex_lock (&dev->shutdown_lock);if (pci_is_enabled (to_pci_dev (dev->dev))) {nvme_freeze_queues (dev); csts =readl (&dev->bar->csts);
@@ -2972,6 +2973,7 @@ static void nvme_dev_shutdown(struct nvmfor (i = dev->queue_count -1 ; i >=0 ; i--)nvme_clear_queue (dev->queues[i]); +mutex_unlock (&dev->shutdown_lock); }static void nvme_dev_remove (struct nvme_dev *dev)
@@ -3328,6 +3330,7 @@ static int nvme_probe(struct pci_dev *pdINIT_LIST_HEAD (&dev->namespaces);INIT_WORK (&dev->reset_work, nvme_reset_work); +mutex_init (&dev->shutdown_lock); dev->dev =get_device (&pdev->dev);pci_set_drvdata (pdev, dev);
Patches currently in stable-queue which might be from [email protected] are
queue-4.4/nvme-protect-against-simultaneous-shutdown-invocations.patch