diff --git a/[refs] b/[refs] index 679f21f6d3ae..ddeb1a0be42a 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: a7c2491a13cc72fc09c062e635b9a77ff6bb4a73 +refs/heads/master: 6003a93e7bf6c02f33c02976ff364785d4273295 diff --git a/trunk/ipc/sem.c b/trunk/ipc/sem.c index 19af028a3e38..6a16f8edf2b2 100644 --- a/trunk/ipc/sem.c +++ b/trunk/ipc/sem.c @@ -381,6 +381,7 @@ static void update_queue (struct sem_array * sma) /* hands-off: q will disappear immediately after * writing q->status. */ + smb_wmb(); q->status = error; q = n; } else { @@ -461,6 +462,7 @@ static void freeary (struct sem_array *sma, int id) n = q->next; q->status = IN_WAKEUP; wake_up_process(q->sleeper); /* doesn't sleep */ + smp_wmb(); q->status = -EIDRM; /* hands-off q */ q = n; }