diff --git a/ipc/sem.c b/ipc/sem.c index 910c7a3865c8..454f6c6020a8 100644 --- a/ipc/sem.c +++ b/ipc/sem.c @@ -1000,6 +1000,17 @@ static int check_qop(struct sem_array *sma, int semnum, struct sem_queue *q, { struct sembuf *sop = q->blocking; + /* + * Linux always (since 0.99.10) reported a task as sleeping on all + * semaphores. This violates SUS, therefore it was changed to the + * standard compliant behavior. + * Give the administrators a chance to notice that an application + * might misbehave because it relies on the Linux behavior. + */ + pr_info_once("semctl(GETNCNT/GETZCNT) is since 3.16 Single Unix Specification compliant.\n" + "The task %s (%d) triggered the difference, watch for misbehavior.\n", + current->comm, task_pid_nr(current)); + if (sop->sem_num != semnum) return 0;