X-Git-Url: https://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-kernel.git;a=blobdiff_plain;f=ipc%2Fsem.c;h=b31c3ef43c913f4cea4d583703ea015c9c777a2f;hp=67f2110c8a806f618a26d118e73f501f0983df33;hb=0bdf1e820160cdeb16cba1c5ea6892ae982a6587;hpb=a1c4fb80c5d94ef61a77c1e891cae616a50d8d3c diff --git a/ipc/sem.c b/ipc/sem.c index 67f2110c8a80..b31c3ef43c91 100644 --- a/ipc/sem.c +++ b/ipc/sem.c @@ -314,14 +314,6 @@ static int newary(struct ipc_namespace *ns, struct ipc_params *params) return retval; } - id = ipc_addid(&sem_ids(ns), &sma->sem_perm, ns->sc_semmni); - if (id < 0) { - security_sem_free(sma); - ipc_rcu_putref(sma); - return id; - } - ns->used_sems += nsems; - sma->sem_base = (struct sem *) &sma[1]; for (i = 0; i < nsems; i++) @@ -332,6 +324,15 @@ static int newary(struct ipc_namespace *ns, struct ipc_params *params) INIT_LIST_HEAD(&sma->list_id); sma->sem_nsems = nsems; sma->sem_ctime = get_seconds(); + + id = ipc_addid(&sem_ids(ns), &sma->sem_perm, ns->sc_semmni); + if (id < 0) { + security_sem_free(sma); + ipc_rcu_putref(sma); + return id; + } + ns->used_sems += nsems; + sem_unlock(sma); return sma->sem_perm.id;