summaryrefslogtreecommitdiffstats
path: root/drivers/block
diff options
context:
space:
mode:
authorLaszlo Ersek <lersek@redhat.com>2011-05-13 09:45:40 -0400
committerKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>2011-05-13 09:45:40 -0400
commit496b318eb65558c1a3a4fe882cb9da6d1dc6493a (patch)
tree090f1739245a42ef4c147d36e52c3aca557b4dcd /drivers/block
parent5185432277ddf5bd91ad5af29cd1945f25ed10fc (diff)
downloadlinux-496b318eb65558c1a3a4fe882cb9da6d1dc6493a.tar.gz
linux-496b318eb65558c1a3a4fe882cb9da6d1dc6493a.tar.bz2
linux-496b318eb65558c1a3a4fe882cb9da6d1dc6493a.zip
xen/blkback: fix xenbus_transaction_start() hang caused by double xenbus_transaction_end()
vbd_resize() up_read()'s xs_state.suspend_mutex twice in a row via double xenbus_transaction_end() calls. The next down_read() in xenbus_transaction_start() (at eg. the next resize attempt) hangs. Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=618317 Acked-by: Jan Beulich <jbeulich@novell.com> Acked-by: Ian Campbell <ian.campbell@citrix.com> Signed-off-by: Laszlo Ersek <lersek@redhat.com> Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Diffstat (limited to 'drivers/block')
-rw-r--r--drivers/block/xen-blkback/blkback.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/block/xen-blkback/blkback.c b/drivers/block/xen-blkback/blkback.c
index 9dee5454740f..dba55e3a4a86 100644
--- a/drivers/block/xen-blkback/blkback.c
+++ b/drivers/block/xen-blkback/blkback.c
@@ -226,6 +226,7 @@ again:
goto again;
if (err)
pr_warn(DRV_PFX "Error ending transaction");
+ return;
abort:
xenbus_transaction_end(xbt, 1);
}