X-Git-Url: https://git.karo-electronics.de/?a=blobdiff_plain;f=ipc%2Fsem.c;h=cb5bb2a5df96f417f5c44b1108e8483ee3a10585;hb=f61ea1b0c825a20a1826bb43a226387091934586;hp=19af028a3e380d251d31e4b8ec4cd96ee679a1cb;hpb=d67eb16f5d444fb6d173bcec889ddb2066c0fa0c;p=mv-sheeva.git diff --git a/ipc/sem.c b/ipc/sem.c index 19af028a3e3..cb5bb2a5df9 100644 --- a/ipc/sem.c +++ b/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. */ + smp_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; }