]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
3.4-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 20 Feb 2014 20:41:07 +0000 (12:41 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 20 Feb 2014 20:41:07 +0000 (12:41 -0800)
added patches:
xen-blkfront-handle-backend-closed-without-closing.patch

queue-3.4/series [new file with mode: 0644]
queue-3.4/xen-blkfront-handle-backend-closed-without-closing.patch [new file with mode: 0644]

diff --git a/queue-3.4/series b/queue-3.4/series
new file mode 100644 (file)
index 0000000..0e02a08
--- /dev/null
@@ -0,0 +1 @@
+xen-blkfront-handle-backend-closed-without-closing.patch
diff --git a/queue-3.4/xen-blkfront-handle-backend-closed-without-closing.patch b/queue-3.4/xen-blkfront-handle-backend-closed-without-closing.patch
new file mode 100644 (file)
index 0000000..4189c92
--- /dev/null
@@ -0,0 +1,44 @@
+From 3661371701e714f0cea4120f6a365340858fb4e4 Mon Sep 17 00:00:00 2001
+From: David Vrabel <david.vrabel@citrix.com>
+Date: Tue, 4 Feb 2014 18:53:56 +0000
+Subject: xen-blkfront: handle backend CLOSED without CLOSING
+
+From: David Vrabel <david.vrabel@citrix.com>
+
+commit 3661371701e714f0cea4120f6a365340858fb4e4 upstream.
+
+Backend drivers shouldn't transistion to CLOSED unless the frontend is
+CLOSED.  If a backend does transition to CLOSED too soon then the
+frontend may not see the CLOSING state and will not properly shutdown.
+
+So, treat an unexpected backend CLOSED state the same as CLOSING.
+
+Signed-off-by: David Vrabel <david.vrabel@citrix.com>
+Acked-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
+Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/block/xen-blkfront.c |    5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+--- a/drivers/block/xen-blkfront.c
++++ b/drivers/block/xen-blkfront.c
+@@ -1303,13 +1303,16 @@ static void blkback_changed(struct xenbu
+       case XenbusStateReconfiguring:
+       case XenbusStateReconfigured:
+       case XenbusStateUnknown:
+-      case XenbusStateClosed:
+               break;
+       case XenbusStateConnected:
+               blkfront_connect(info);
+               break;
++      case XenbusStateClosed:
++              if (dev->state == XenbusStateClosed)
++                      break;
++              /* Missed the backend's Closing state -- fallthrough */
+       case XenbusStateClosing:
+               blkfront_closing(info);
+               break;