From: Greg Kroah-Hartman Date: Thu, 20 Feb 2014 20:41:07 +0000 (-0800) Subject: 3.4-stable patches X-Git-Tag: v3.4.82~43 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=34288409744bea3f11f3abe14402fc1ef604ec09;p=thirdparty%2Fkernel%2Fstable-queue.git 3.4-stable patches added patches: xen-blkfront-handle-backend-closed-without-closing.patch --- diff --git a/queue-3.4/series b/queue-3.4/series new file mode 100644 index 00000000000..0e02a08abc9 --- /dev/null +++ b/queue-3.4/series @@ -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 index 00000000000..4189c9262d3 --- /dev/null +++ b/queue-3.4/xen-blkfront-handle-backend-closed-without-closing.patch @@ -0,0 +1,44 @@ +From 3661371701e714f0cea4120f6a365340858fb4e4 Mon Sep 17 00:00:00 2001 +From: David Vrabel +Date: Tue, 4 Feb 2014 18:53:56 +0000 +Subject: xen-blkfront: handle backend CLOSED without CLOSING + +From: David Vrabel + +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 +Acked-by: Konrad Rzeszutek Wilk +Signed-off-by: Konrad Rzeszutek Wilk +Signed-off-by: Greg Kroah-Hartman + +--- + 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;