diff options
author | Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca> | 2008-03-24 15:29:49 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-03-24 22:22:19 -0400 |
commit | 58336114af4d2cce830201aae49e50b93ede6c5c (patch) | |
tree | e3df187b38657b86953a5ead5b022572c35c8288 | |
parent | fd3c36f8b527d13cf311d15e0702bc0390956970 (diff) |
markers: remove ACCESS_ONCE
As Paul pointed out, the ACCESS_ONCE are not needed because we already have
the explicit surrounding memory barriers.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Cc: Christoph Hellwig <hch@infradead.org>
Cc: Mike Mason <mmlnx@us.ibm.com>
Cc: Dipankar Sarma <dipankar@in.ibm.com>
Cc: David Smith <dsmith@redhat.com>
Cc: "Paul E. McKenney" <paulmck@us.ibm.com>
Cc: Steven Rostedt <rostedt@goodmis.org>
Cc: Adrian Bunk <adrian.bunk@movial.fi>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r-- | kernel/marker.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/kernel/marker.c b/kernel/marker.c index ccae1d10e32f..041c33e3e95c 100644 --- a/kernel/marker.c +++ b/kernel/marker.c | |||
@@ -109,13 +109,13 @@ void marker_probe_cb(const struct marker *mdata, void *call_private, | |||
109 | * modules and they insure RCU read coherency. | 109 | * modules and they insure RCU read coherency. |
110 | */ | 110 | */ |
111 | preempt_disable(); | 111 | preempt_disable(); |
112 | ptype = ACCESS_ONCE(mdata->ptype); | 112 | ptype = mdata->ptype; |
113 | if (likely(!ptype)) { | 113 | if (likely(!ptype)) { |
114 | marker_probe_func *func; | 114 | marker_probe_func *func; |
115 | /* Must read the ptype before ptr. They are not data dependant, | 115 | /* Must read the ptype before ptr. They are not data dependant, |
116 | * so we put an explicit smp_rmb() here. */ | 116 | * so we put an explicit smp_rmb() here. */ |
117 | smp_rmb(); | 117 | smp_rmb(); |
118 | func = ACCESS_ONCE(mdata->single.func); | 118 | func = mdata->single.func; |
119 | /* Must read the ptr before private data. They are not data | 119 | /* Must read the ptr before private data. They are not data |
120 | * dependant, so we put an explicit smp_rmb() here. */ | 120 | * dependant, so we put an explicit smp_rmb() here. */ |
121 | smp_rmb(); | 121 | smp_rmb(); |
@@ -133,7 +133,7 @@ void marker_probe_cb(const struct marker *mdata, void *call_private, | |||
133 | * in the fast path, so put the explicit barrier here. | 133 | * in the fast path, so put the explicit barrier here. |
134 | */ | 134 | */ |
135 | smp_read_barrier_depends(); | 135 | smp_read_barrier_depends(); |
136 | multi = ACCESS_ONCE(mdata->multi); | 136 | multi = mdata->multi; |
137 | for (i = 0; multi[i].func; i++) { | 137 | for (i = 0; multi[i].func; i++) { |
138 | va_start(args, fmt); | 138 | va_start(args, fmt); |
139 | multi[i].func(multi[i].probe_private, call_private, fmt, | 139 | multi[i].func(multi[i].probe_private, call_private, fmt, |
@@ -161,13 +161,13 @@ void marker_probe_cb_noarg(const struct marker *mdata, | |||
161 | char ptype; | 161 | char ptype; |
162 | 162 | ||
163 | preempt_disable(); | 163 | preempt_disable(); |
164 | ptype = ACCESS_ONCE(mdata->ptype); | 164 | ptype = mdata->ptype; |
165 | if (likely(!ptype)) { | 165 | if (likely(!ptype)) { |
166 | marker_probe_func *func; | 166 | marker_probe_func *func; |
167 | /* Must read the ptype before ptr. They are not data dependant, | 167 | /* Must read the ptype before ptr. They are not data dependant, |
168 | * so we put an explicit smp_rmb() here. */ | 168 | * so we put an explicit smp_rmb() here. */ |
169 | smp_rmb(); | 169 | smp_rmb(); |
170 | func = ACCESS_ONCE(mdata->single.func); | 170 | func = mdata->single.func; |
171 | /* Must read the ptr before private data. They are not data | 171 | /* Must read the ptr before private data. They are not data |
172 | * dependant, so we put an explicit smp_rmb() here. */ | 172 | * dependant, so we put an explicit smp_rmb() here. */ |
173 | smp_rmb(); | 173 | smp_rmb(); |
@@ -183,7 +183,7 @@ void marker_probe_cb_noarg(const struct marker *mdata, | |||
183 | * in the fast path, so put the explicit barrier here. | 183 | * in the fast path, so put the explicit barrier here. |
184 | */ | 184 | */ |
185 | smp_read_barrier_depends(); | 185 | smp_read_barrier_depends(); |
186 | multi = ACCESS_ONCE(mdata->multi); | 186 | multi = mdata->multi; |
187 | for (i = 0; multi[i].func; i++) | 187 | for (i = 0; multi[i].func; i++) |
188 | multi[i].func(multi[i].probe_private, call_private, fmt, | 188 | multi[i].func(multi[i].probe_private, call_private, fmt, |
189 | &args); | 189 | &args); |