X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=ipc%2Fsem.c;h=d3e12efd55cb39e6cdce7cd48ac73833100f60cf;hb=5d4958f923f431e148d9ba8ff894209a134b943e;hp=0dafcc455f920888fe13a474b926ad0bd6825a11;hpb=12e36b2f41b6cbc67386fcb9c59c32a3e2033905;p=powerpc.git diff --git a/ipc/sem.c b/ipc/sem.c index 0dafcc455f..d3e12efd55 100644 --- a/ipc/sem.c +++ b/ipc/sem.c @@ -161,6 +161,7 @@ void sem_exit_ns(struct ipc_namespace *ns) } mutex_unlock(&sem_ids(ns).mutex); + ipc_fini_ids(ns->ids[IPC_SEM_IDS]); kfree(ns->ids[IPC_SEM_IDS]); ns->ids[IPC_SEM_IDS] = NULL; } @@ -1069,14 +1070,13 @@ static struct sem_undo *find_undo(struct ipc_namespace *ns, int semid) ipc_rcu_getref(sma); sem_unlock(sma); - new = (struct sem_undo *) kmalloc(sizeof(struct sem_undo) + sizeof(short)*nsems, GFP_KERNEL); + new = kzalloc(sizeof(struct sem_undo) + sizeof(short)*nsems, GFP_KERNEL); if (!new) { ipc_lock_by_ptr(&sma->sem_perm); ipc_rcu_putref(sma); sem_unlock(sma); return ERR_PTR(-ENOMEM); } - memset(new, 0, sizeof(struct sem_undo) + sizeof(short)*nsems); new->semadj = (short *) &new[1]; new->semid = semid;