aboutsummaryrefslogtreecommitdiffstats
path: root/ipc
diff options
context:
space:
mode:
authorSteve French <sfrench@us.ibm.com>2005-12-31 10:27:22 -0800
committerSteve French <sfrench@us.ibm.com>2005-12-31 10:27:22 -0800
commiteea60caef610c7a6c58c0de9c80ae1e438e01301 (patch)
tree25e19289bba003fe085e589430d0d981fd6b73a7 /ipc
parentMerge with /pub/scm/linux/kernel/git/torvalds/linux-2.6.git (diff)
parent[PATCH] Fix false old value return of sysctl (diff)
downloadlinux-dev-eea60caef610c7a6c58c0de9c80ae1e438e01301.tar.xz
linux-dev-eea60caef610c7a6c58c0de9c80ae1e438e01301.zip
Merge with /pub/scm/linux/kernel/git/torvalds/linux-2.6.git
Signed-off-by: Steve French <sfrench@us.ibm.com>
Diffstat (limited to 'ipc')
-rw-r--r--ipc/sem.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/ipc/sem.c b/ipc/sem.c
index 19af028a3e38..cb5bb2a5df96 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;
}