Subject: Re: [vserver] [PATCH] Fix process lockup on a loop device
From: Herbert Poetzl <herbert@13thfloor.at>
Date: Sat, 17 Dec 2011 19:58:58 +0100

On Sat, Dec 17, 2011 at 10:30:58PM +0900, Ryota Ozaki wrote:
> lo_open returns with holding loop_index_mutex when
> vx_check failed, resulting in a process lockup on
> a loop device.

thanks a bunch!

best,
Herbert

> 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