diff options
Diffstat (limited to 'kernel')
| -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); |
