mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-05 10:31:46 +09:00
FROMGIT: virtio_pmem: Check device status before requesting flush
If a pmem device is in a bad status, the driver side could wait for host ack forever in virtio_pmem_flush(), causing the system to hang. So add a status check in the beginning of virtio_pmem_flush() to return early if the device is not activated. Signed-off-by: Philip Chen <philipchen@chromium.org> Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Acked-by: Pankaj Gupta <pankaj.gupta.linux@gmail.com Bug: 358391069 Change-Id: I325e6f0ea047c4c5fa82cf4b590cbf7240f39b7b (cherry picked from commit e25fbcd97cf52c3c9824d44b5c56c19673c3dd50 https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master) Signed-off-by: Philip Chen <philipchen@google.com>
This commit is contained in:
committed by
Treehugger Robot
parent
b2a0a8f709
commit
df571cd9f1
@@ -44,6 +44,15 @@ static int virtio_pmem_flush(struct nd_region *nd_region)
|
||||
unsigned long flags;
|
||||
int err, err1;
|
||||
|
||||
/*
|
||||
* Don't bother to submit the request to the device if the device is
|
||||
* not activated.
|
||||
*/
|
||||
if (vdev->config->get_status(vdev) & VIRTIO_CONFIG_S_NEEDS_RESET) {
|
||||
dev_info(&vdev->dev, "virtio pmem device needs a reset\n");
|
||||
return -EIO;
|
||||
}
|
||||
|
||||
might_sleep();
|
||||
req_data = kmalloc(sizeof(*req_data), GFP_KERNEL);
|
||||
if (!req_data)
|
||||
|
||||
Reference in New Issue
Block a user