projects
/
firefly-linux-kernel-4.4.55.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
[PATCH] spi: remove fastcall crap
[firefly-linux-kernel-4.4.55.git]
/
ipc
/
sem.c
diff --git
a/ipc/sem.c
b/ipc/sem.c
index 19af028a3e380d251d31e4b8ec4cd96ee679a1cb..46bb8a678decb50f760193c94cf2dcbce9f0e4e8 100644
(file)
--- a/
ipc/sem.c
+++ b/
ipc/sem.c
@@
-73,6
+73,7
@@
#include <linux/security.h>
#include <linux/syscalls.h>
#include <linux/audit.h>
#include <linux/security.h>
#include <linux/syscalls.h>
#include <linux/audit.h>
+#include <linux/capability.h>
#include <linux/seq_file.h>
#include <asm/uaccess.h>
#include "util.h"
#include <linux/seq_file.h>
#include <asm/uaccess.h>
#include "util.h"
@@
-381,6
+382,7
@@
static void update_queue (struct sem_array * sma)
/* hands-off: q will disappear immediately after
* writing q->status.
*/
/* hands-off: q will disappear immediately after
* writing q->status.
*/
+ smp_wmb();
q->status = error;
q = n;
} else {
q->status = error;
q = n;
} else {
@@
-461,6
+463,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 */
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;
}
q->status = -EIDRM; /* hands-off q */
q = n;
}