summaryrefslogtreecommitdiffstats
path: root/ipc/sem.c
diff options
context:
space:
mode:
authorRalf Baechle <ralf@linux-mips.org>2000-02-04 07:40:19 +0000
committerRalf Baechle <ralf@linux-mips.org>2000-02-04 07:40:19 +0000
commit33263fc5f9ac8e8cb2b22d06af3ce5ac1dd815e4 (patch)
tree2d1b86a40bef0958a68cf1a2eafbeb0667a70543 /ipc/sem.c
parent216f5f51aa02f8b113aa620ebc14a9631a217a00 (diff)
Merge with Linux 2.3.32.
Diffstat (limited to 'ipc/sem.c')
-rw-r--r--ipc/sem.c10
1 files changed, 3 insertions, 7 deletions
diff --git a/ipc/sem.c b/ipc/sem.c
index a5f2310b3..103761a2b 100644
--- a/ipc/sem.c
+++ b/ipc/sem.c
@@ -190,12 +190,7 @@ static int sem_revalidate(int semid, struct semid_ds* sma, int nsems, short flg)
smanew = sem_lock(semid);
if(smanew==NULL)
return -EIDRM;
- if(smanew != sma)
- goto out_EIDRM;
- if(sem_checkid(sma,semid))
- goto out_EIDRM;
- if(sma->sem_nsems != nsems) {
-out_EIDRM:
+ if(smanew != sma || sem_checkid(sma,semid) || sma->sem_nsems != nsems) {
sem_unlock(semid);
return -EIDRM;
}
@@ -494,6 +489,8 @@ int semctl_main(int semid, int semnum, int cmd, union semun arg)
if(sma==NULL)
return -EINVAL;
+ nsems = sma->sem_nsems;
+
err=-EIDRM;
if (sem_checkid(sma,semid))
goto out_unlock;
@@ -502,7 +499,6 @@ int semctl_main(int semid, int semnum, int cmd, union semun arg)
if (ipcperms (&sma->sem_perm, (cmd==SETVAL||cmd==SETALL)?S_IWUGO:S_IRUGO))
goto out_unlock;
- nsems = sma->sem_nsems;
switch (cmd) {
case GETALL:
{