diff options
author | Deepak Saxena <dsaxena@laptop.org> | 2008-08-10 14:05:58 -0700 |
---|---|---|
committer | Deepak Saxena <dsaxena@laptop.org> | 2008-08-10 14:05:58 -0700 |
commit | f5931acac40cff4ec59a12db54570d0c2cb3cd91 (patch) | |
tree | 51e7b7474e349b8f9baf2b3393b27d52169698dd /kernel | |
parent | a347731f82edeb8f176ae0bcfcc5d7fee6786a7c (diff) | |
parent | 3ef22854c2ddd56393d99c9c39dc80c7afe1b468 (diff) | |
download | lwn-f5931acac40cff4ec59a12db54570d0c2cb3cd91.tar.gz lwn-f5931acac40cff4ec59a12db54570d0c2cb3cd91.zip |
Merge commit 'v2.6.25.14' into olpc-testing
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/marker.c | 12 | ||||
-rw-r--r-- | kernel/sys_ni.c | 1 |
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); |