|
@@ -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;
|
|
|
|