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@xxxxxxxxxx> --- 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); -- 1.6.1 _______________________________________________ Containers mailing list Containers@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linux-foundation.org/mailman/listinfo/containers