summaryrefslogtreecommitdiff
path: root/kernel
diff options
context:
space:
mode:
authorDeepak Saxena <dsaxena@laptop.org>2008-08-10 14:05:58 -0700
committerDeepak Saxena <dsaxena@laptop.org>2008-08-10 14:05:58 -0700
commitf5931acac40cff4ec59a12db54570d0c2cb3cd91 (patch)
tree51e7b7474e349b8f9baf2b3393b27d52169698dd /kernel
parenta347731f82edeb8f176ae0bcfcc5d7fee6786a7c (diff)
parent3ef22854c2ddd56393d99c9c39dc80c7afe1b468 (diff)
downloadlwn-f5931acac40cff4ec59a12db54570d0c2cb3cd91.tar.gz
lwn-f5931acac40cff4ec59a12db54570d0c2cb3cd91.zip
Merge commit 'v2.6.25.14' into olpc-testing
Diffstat (limited to 'kernel')
-rw-r--r--kernel/marker.c12
-rw-r--r--kernel/sys_ni.c1
2 files changed, 11 insertions, 2 deletions
diff --git a/kernel/marker.c b/kernel/marker.c
index 005b95954593..54ce00f810e1 100644
--- a/kernel/marker.c
+++ b/kernel/marker.c
@@ -126,6 +126,11 @@ void marker_probe_cb(const struct marker *mdata, void *call_private,
struct marker_probe_closure *multi;
int i;
/*
+ * Read mdata->ptype before mdata->multi.
+ */
+ smp_rmb();
+ multi = mdata->multi;
+ /*
* multi points to an array, therefore accessing the array
* depends on reading multi. However, even in this case,
* we must insure that the pointer is read _before_ the array
@@ -133,7 +138,6 @@ void marker_probe_cb(const struct marker *mdata, void *call_private,
* in the fast path, so put the explicit barrier here.
*/
smp_read_barrier_depends();
- multi = mdata->multi;
for (i = 0; multi[i].func; i++) {
va_start(args, fmt);
multi[i].func(multi[i].probe_private, call_private, fmt,
@@ -176,6 +180,11 @@ void marker_probe_cb_noarg(const struct marker *mdata,
struct marker_probe_closure *multi;
int i;
/*
+ * Read mdata->ptype before mdata->multi.
+ */
+ smp_rmb();
+ multi = mdata->multi;
+ /*
* multi points to an array, therefore accessing the array
* depends on reading multi. However, even in this case,
* we must insure that the pointer is read _before_ the array
@@ -183,7 +192,6 @@ void marker_probe_cb_noarg(const struct marker *mdata,
* in the fast path, so put the explicit barrier here.
*/
smp_read_barrier_depends();
- multi = mdata->multi;
for (i = 0; multi[i].func; i++)
multi[i].func(multi[i].probe_private, call_private, fmt,
&args);
diff --git a/kernel/sys_ni.c b/kernel/sys_ni.c
index 5b9b467de070..0fea0ee12da9 100644
--- a/kernel/sys_ni.c
+++ b/kernel/sys_ni.c
@@ -59,6 +59,7 @@ cond_syscall(sys_epoll_create);
cond_syscall(sys_epoll_ctl);
cond_syscall(sys_epoll_wait);
cond_syscall(sys_epoll_pwait);
+cond_syscall(compat_sys_epoll_pwait);
cond_syscall(sys_semget);
cond_syscall(sys_semop);
cond_syscall(sys_semtimedop);