[vserver] [PATCH] Fix process lockup on a loop device

From: Ryota Ozaki <ozaki.ryota_at_gmail.com>
Date: Sat 17 Dec 2011 - 13:30:58 GMT
Message-Id: <1324128658-14767-1-git-send-email-ozaki.ryota@gmail.com>

lo_open returns with holding loop_index_mutex when
vx_check failed, resulting in a process lockup on
a loop device.

Signed-off-by: Ryota Ozaki <ozaki.ryota@gmail.com>

---
 drivers/block/loop.c |    6 ++++--
 1 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/drivers/block/loop.c b/drivers/block/loop.c
index b01b03c..c34ad3b 100644
--- a/drivers/block/loop.c
+++ b/drivers/block/loop.c
@@ -1494,8 +1494,10 @@ static int lo_open(struct block_device *bdev, fmode_t mode)
 		goto out;
 	}
 
-	if (!vx_check(lo->lo_xid, VS_IDENT|VS_HOSTID|VS_ADMIN_P))
-		return -EACCES;
+	if (!vx_check(lo->lo_xid, VS_IDENT|VS_HOSTID|VS_ADMIN_P)) {
+		err = -EACCES;
+		goto out;
+	}
 
 	mutex_lock(&lo->lo_ctl_mutex);
 	lo->lo_refcnt++;
-- 
1.7.5.4
Received on Sat Dec 17 13:38:25 2011
[Next/Previous Months] [Main vserver Project Homepage] [Howto Subscribe/Unsubscribe] [Paul Sladen's vserver stuff]
Generated on Sat 17 Dec 2011 - 13:38:25 GMT by hypermail 2.1.8