Good catch - applied. Oren. On 06/16/2010 12:54 PM, Dan Smith wrote: > Right now, we leave (effectively) garbage in it after restart. Not only > must this be re-initialized (since we know it was empty on checkpoint), but > it must be initialized after being copied into the final resting place. > > Without this, you get lots of fun crashes in various places :) > > Signed-off-by: Dan Smith <danms@xxxxxxxxxx> > --- > ipc/checkpoint_sem.c | 5 ++++- > 1 files changed, 4 insertions(+), 1 deletions(-) > > diff --git a/ipc/checkpoint_sem.c b/ipc/checkpoint_sem.c > index ab1830e..43e3cdf 100644 > --- a/ipc/checkpoint_sem.c > +++ b/ipc/checkpoint_sem.c > @@ -171,7 +171,7 @@ int restore_ipc_sem(struct ckpt_ctx *ctx, struct ipc_namespace *ns) > struct sem_array *sem; > struct sem *sma = NULL; > struct ipc_ids *sem_ids = &ns->ids[IPC_SEM_IDS]; > - int semflag, ret; > + int semflag, ret, i; > > h = ckpt_read_obj_type(ctx, sizeof(*h), CKPT_HDR_IPC_SEM); > if (IS_ERR(h)) > @@ -222,6 +222,9 @@ int restore_ipc_sem(struct ckpt_ctx *ctx, struct ipc_namespace *ns) > sem = container_of(ipc, struct sem_array, sem_perm); > memcpy(sem->sem_base, sma, sem->sem_nsems * sizeof(*sma)); > > + for (i = 0; i < sem->sem_nsems; i++) > + INIT_LIST_HEAD(&sem->sem_base[i].sem_pending); > + > /* this is safe because no unauthorized access is possible */ > ipc_unlock(ipc); > _______________________________________________ Containers mailing list Containers@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linux-foundation.org/mailman/listinfo/containers