diff --git a/ipc/sem.c b/ipc/sem.c index 899b598b63be..04b264dbf141 100644 --- a/ipc/sem.c +++ b/ipc/sem.c @@ -815,6 +815,13 @@ static int count_semzcnt (struct sem_array * sma, ushort semnum) struct sem_queue * q; semzcnt = 0; + list_for_each_entry(q, &sma->sem_base[semnum].sem_pending, list) { + struct sembuf * sops = q->sops; + BUG_ON(sops->sem_num != semnum); + if ((sops->sem_op == 0) && !(sops->sem_flg & IPC_NOWAIT)) + semzcnt++; + } + list_for_each_entry(q, &sma->sem_pending, list) { struct sembuf * sops = q->sops; int nsops = q->nsops;