xen/blkback: fix xenbus_transaction_start() hang caused by double xenbus_transaction_...
authorLaszlo Ersek <lersek@redhat.com>
Fri, 13 May 2011 13:45:40 +0000 (09:45 -0400)
committerKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Fri, 13 May 2011 13:45:40 +0000 (09:45 -0400)
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>
drivers/block/xen-blkback/blkback.c

index 9dee5454740f60ea681fd43946f68142f5c4f8de..dba55e3a4a864655849e082141d8cd4c577520a0 100644 (file)
@@ -226,6 +226,7 @@ again:
                goto again;
        if (err)
                pr_warn(DRV_PFX "Error ending transaction");
+       return;
 abort:
        xenbus_transaction_end(xbt, 1);
 }