[PATCH 1/1] cr: don't unlock ipc before freeing

Oren Laadan orenl at cs.columbia.edu
Fri May 29 14:37:35 PDT 2009


It's in.

Serge E. Hallyn wrote:
> Sorry, this should have been a part of the analogous sem fix.
> 
>     [re commit 615744ad97 ... c/r: support share-memory sysv-ipc]
> 
> Signed-off-by: Serge E. Hallyn <serue at us.ibm.com>
> ---
>  ipc/checkpoint_msg.c |    4 ++--
>  ipc/checkpoint_shm.c |    4 ++--
>  2 files changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/ipc/checkpoint_msg.c b/ipc/checkpoint_msg.c
> index a988a9e..fb1a61e 100644
> --- a/ipc/checkpoint_msg.c
> +++ b/ipc/checkpoint_msg.c
> @@ -348,12 +348,12 @@ int restore_ipc_msg(struct ckpt_ctx *ctx)
>  	msq->q_qnum = h->q_qnum;
>  
>  	ret = load_ipc_msg_hdr(ctx, h, msq);
> -	ipc_unlock(perms);
>  
>  	if (ret < 0) {
>  		ckpt_debug("msq: need to remove (%d)\n", ret);
>  		freeque(current->nsproxy->ipc_ns, perms);
> -	}
> +	} else
> +		ipc_unlock(perms);
>  	up_write(&msg_ids->rw_mutex);
>   out:
>  	free_msg_list(&messages);  /* no-op if all ok, else cleanup msgs */
> diff --git a/ipc/checkpoint_shm.c b/ipc/checkpoint_shm.c
> index 713f910..0d8eb14 100644
> --- a/ipc/checkpoint_shm.c
> +++ b/ipc/checkpoint_shm.c
> @@ -239,7 +239,6 @@ int restore_ipc_shm(struct ckpt_ctx *ctx)
>  	get_file(file);
>  
>  	ret = load_ipc_shm_hdr(ctx, h, shp);
> -	ipc_unlock(perms);
>  	if (ret < 0)
>  		goto mutex;
>  
> @@ -253,7 +252,8 @@ int restore_ipc_shm(struct ckpt_ctx *ctx)
>  	if (ret < 0) {
>  		ckpt_debug("shm: need to remove (%d)\n", ret);
>  		do_shm_rmid(current->nsproxy->ipc_ns, perms);
> -	}
> +	} else
> +		ipc_unlock(perms);
>  	up_write(&shm_ids->rw_mutex);
>   out:
>  	ckpt_hdr_put(ctx, h);


More information about the Containers mailing list