From: Laszlo Ersek Date: Mon, 16 May 2011 12:26:45 +0000 (+0100) Subject: xenbus: fix xenbus_transaction_start() hang caused by double xenbus_transaction_end() X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=aed3bdd642c2f05e557025cce7e1f329bff777fc;p=legacy%2Flinux-2.6.18-xen.git xenbus: 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. See RHBZ#618317. Signed-off-by: Laszlo Ersek Acked-by: Jan Beulich Acked-by: Ian Campbell --- diff --git a/drivers/xen/blkback/vbd.c b/drivers/xen/blkback/vbd.c index 802b7868..5677e86c 100644 --- a/drivers/xen/blkback/vbd.c +++ b/drivers/xen/blkback/vbd.c @@ -156,6 +156,7 @@ again: goto again; if (err) printk(KERN_WARNING "Error ending transaction"); + return; abort: xenbus_transaction_end(xbt, 1); }