History

asm-generic, atomic-instrumented: Use generic instrumented.h

This switches atomic-instrumented.h to use the generic instrumentation wrappers provided by instrumented.h. No functional change intended.

Marco Elver committed 6 years ago

Commit ed8af2e1 parent 36e4d4d2 files · +194 −220Browse files

Unified · Split

2 files
  1. include/asm-generic/atomic-instrumented.h +191 −204
  2. scripts/atomic/gen-atomic-instrumented.sh +3 −16
include/asm-generic/atomic-instrumented.h+191−204
@@ -19,25 +19,12 @@ · 18 unmodified lines
1919
2020 #include <linux/build_bug.h>
2121 #include <linux/compiler.h>
22−#include <linux/kasan-checks.h>
23−#include <linux/kcsan-checks.h>
24−
25−static __always_inline void __atomic_check_read(const volatile void *v, size_t size)
26−{
27− kasan_check_read(v, size);
28− kcsan_check_atomic_read(v, size);
29−}
30−
31−static __always_inline void __atomic_check_write(const volatile void *v, size_t size)
32−{
33− kasan_check_write(v, size);
34− kcsan_check_atomic_write(v, size);
35−}
22+#include <linux/instrumented.h>
3623
3724 static __always_inline int
3825 atomic_read(const atomic_t *v)
3926 {
40− __atomic_check_read(v, sizeof(*v));
27+ instrument_atomic_read(v, sizeof(*v));
4128 return arch_atomic_read(v);
4229 }
4330 #define atomic_read atomic_read
@@ -46,7 +33,7 @@ atomic_read(const atomic_t *v) · 2 unmodified lines
4633 static __always_inline int
4734 atomic_read_acquire(const atomic_t *v)
4835 {
49− __atomic_check_read(v, sizeof(*v));
36+ instrument_atomic_read(v, sizeof(*v));
5037 return arch_atomic_read_acquire(v);
5138 }
5239 #define atomic_read_acquire atomic_read_acquire
@@ -55,7 +42,7 @@ atomic_read_acquire(const atomic_t *v) · 2 unmodified lines
5542 static __always_inline void
5643 atomic_set(atomic_t *v, int i)
5744 {
58− __atomic_check_write(v, sizeof(*v));
45+ instrument_atomic_write(v, sizeof(*v));
5946 arch_atomic_set(v, i);
6047 }
6148 #define atomic_set atomic_set
@@ -64,7 +51,7 @@ atomic_set(atomic_t *v, int i) · 2 unmodified lines
6451 static __always_inline void
6552 atomic_set_release(atomic_t *v, int i)
6653 {
67− __atomic_check_write(v, sizeof(*v));
54+ instrument_atomic_write(v, sizeof(*v));
6855 arch_atomic_set_release(v, i);
6956 }
7057 #define atomic_set_release atomic_set_release
@@ -73,7 +60,7 @@ atomic_set_release(atomic_t *v, int i) · 2 unmodified lines
7360 static __always_inline void
7461 atomic_add(int i, atomic_t *v)
7562 {
76− __atomic_check_write(v, sizeof(*v));
63+ instrument_atomic_write(v, sizeof(*v));
7764 arch_atomic_add(i, v);
7865 }
7966 #define atomic_add atomic_add
@@ -82,7 +69,7 @@ atomic_add(int i, atomic_t *v) · 2 unmodified lines
8269 static __always_inline int
8370 atomic_add_return(int i, atomic_t *v)
8471 {
85− __atomic_check_write(v, sizeof(*v));
72+ instrument_atomic_write(v, sizeof(*v));
8673 return arch_atomic_add_return(i, v);
8774 }
8875 #define atomic_add_return atomic_add_return
@@ -92,7 +79,7 @@ atomic_add_return(int i, atomic_t *v) · 3 unmodified lines
9279 static __always_inline int
9380 atomic_add_return_acquire(int i, atomic_t *v)
9481 {
95− __atomic_check_write(v, sizeof(*v));
82+ instrument_atomic_write(v, sizeof(*v));
9683 return arch_atomic_add_return_acquire(i, v);
9784 }
9885 #define atomic_add_return_acquire atomic_add_return_acquire
@@ -102,7 +89,7 @@ atomic_add_return_acquire(int i, atomic_t *v) · 3 unmodified lines
10289 static __always_inline int
10390 atomic_add_return_release(int i, atomic_t *v)
10491 {
105− __atomic_check_write(v, sizeof(*v));
92+ instrument_atomic_write(v, sizeof(*v));
10693 return arch_atomic_add_return_release(i, v);
10794 }
10895 #define atomic_add_return_release atomic_add_return_release
@@ -112,7 +99,7 @@ atomic_add_return_release(int i, atomic_t *v) · 3 unmodified lines
11299 static __always_inline int
113100 atomic_add_return_relaxed(int i, atomic_t *v)
114101 {
115− __atomic_check_write(v, sizeof(*v));
102+ instrument_atomic_write(v, sizeof(*v));
116103 return arch_atomic_add_return_relaxed(i, v);
117104 }
118105 #define atomic_add_return_relaxed atomic_add_return_relaxed
@@ -122,7 +109,7 @@ atomic_add_return_relaxed(int i, atomic_t *v) · 3 unmodified lines
122109 static __always_inline int
123110 atomic_fetch_add(int i, atomic_t *v)
124111 {
125− __atomic_check_write(v, sizeof(*v));
112+ instrument_atomic_write(v, sizeof(*v));
126113 return arch_atomic_fetch_add(i, v);
127114 }
128115 #define atomic_fetch_add atomic_fetch_add
@@ -132,7 +119,7 @@ atomic_fetch_add(int i, atomic_t *v) · 3 unmodified lines
132119 static __always_inline int
133120 atomic_fetch_add_acquire(int i, atomic_t *v)
134121 {
135− __atomic_check_write(v, sizeof(*v));
122+ instrument_atomic_write(v, sizeof(*v));
136123 return arch_atomic_fetch_add_acquire(i, v);
137124 }
138125 #define atomic_fetch_add_acquire atomic_fetch_add_acquire
@@ -142,7 +129,7 @@ atomic_fetch_add_acquire(int i, atomic_t *v) · 3 unmodified lines
142129 static __always_inline int
143130 atomic_fetch_add_release(int i, atomic_t *v)
144131 {
145− __atomic_check_write(v, sizeof(*v));
132+ instrument_atomic_write(v, sizeof(*v));
146133 return arch_atomic_fetch_add_release(i, v);
147134 }
148135 #define atomic_fetch_add_release atomic_fetch_add_release
@@ -152,7 +139,7 @@ atomic_fetch_add_release(int i, atomic_t *v) · 3 unmodified lines
152139 static __always_inline int
153140 atomic_fetch_add_relaxed(int i, atomic_t *v)
154141 {
155− __atomic_check_write(v, sizeof(*v));
142+ instrument_atomic_write(v, sizeof(*v));
156143 return arch_atomic_fetch_add_relaxed(i, v);
157144 }
158145 #define atomic_fetch_add_relaxed atomic_fetch_add_relaxed
@@ -161,7 +148,7 @@ atomic_fetch_add_relaxed(int i, atomic_t *v) · 2 unmodified lines
161148 static __always_inline void
162149 atomic_sub(int i, atomic_t *v)
163150 {
164− __atomic_check_write(v, sizeof(*v));
151+ instrument_atomic_write(v, sizeof(*v));
165152 arch_atomic_sub(i, v);
166153 }
167154 #define atomic_sub atomic_sub
@@ -170,7 +157,7 @@ atomic_sub(int i, atomic_t *v) · 2 unmodified lines
170157 static __always_inline int
171158 atomic_sub_return(int i, atomic_t *v)
172159 {
173− __atomic_check_write(v, sizeof(*v));
160+ instrument_atomic_write(v, sizeof(*v));
174161 return arch_atomic_sub_return(i, v);
175162 }
176163 #define atomic_sub_return atomic_sub_return
@@ -180,7 +167,7 @@ atomic_sub_return(int i, atomic_t *v) · 3 unmodified lines
180167 static __always_inline int
181168 atomic_sub_return_acquire(int i, atomic_t *v)
182169 {
183− __atomic_check_write(v, sizeof(*v));
170+ instrument_atomic_write(v, sizeof(*v));
184171 return arch_atomic_sub_return_acquire(i, v);
185172 }
186173 #define atomic_sub_return_acquire atomic_sub_return_acquire
@@ -190,7 +177,7 @@ atomic_sub_return_acquire(int i, atomic_t *v) · 3 unmodified lines
190177 static __always_inline int
191178 atomic_sub_return_release(int i, atomic_t *v)
192179 {
193− __atomic_check_write(v, sizeof(*v));
180+ instrument_atomic_write(v, sizeof(*v));
194181 return arch_atomic_sub_return_release(i, v);
195182 }
196183 #define atomic_sub_return_release atomic_sub_return_release
@@ -200,7 +187,7 @@ atomic_sub_return_release(int i, atomic_t *v) · 3 unmodified lines
200187 static __always_inline int
201188 atomic_sub_return_relaxed(int i, atomic_t *v)
202189 {
203− __atomic_check_write(v, sizeof(*v));
190+ instrument_atomic_write(v, sizeof(*v));
204191 return arch_atomic_sub_return_relaxed(i, v);
205192 }
206193 #define atomic_sub_return_relaxed atomic_sub_return_relaxed
@@ -210,7 +197,7 @@ atomic_sub_return_relaxed(int i, atomic_t *v) · 3 unmodified lines
210197 static __always_inline int
211198 atomic_fetch_sub(int i, atomic_t *v)
212199 {
213− __atomic_check_write(v, sizeof(*v));
200+ instrument_atomic_write(v, sizeof(*v));
214201 return arch_atomic_fetch_sub(i, v);
215202 }
216203 #define atomic_fetch_sub atomic_fetch_sub
@@ -220,7 +207,7 @@ atomic_fetch_sub(int i, atomic_t *v) · 3 unmodified lines
220207 static __always_inline int
221208 atomic_fetch_sub_acquire(int i, atomic_t *v)
222209 {
223− __atomic_check_write(v, sizeof(*v));
210+ instrument_atomic_write(v, sizeof(*v));
224211 return arch_atomic_fetch_sub_acquire(i, v);
225212 }
226213 #define atomic_fetch_sub_acquire atomic_fetch_sub_acquire
@@ -230,7 +217,7 @@ atomic_fetch_sub_acquire(int i, atomic_t *v) · 3 unmodified lines
230217 static __always_inline int
231218 atomic_fetch_sub_release(int i, atomic_t *v)
232219 {
233− __atomic_check_write(v, sizeof(*v));
220+ instrument_atomic_write(v, sizeof(*v));
234221 return arch_atomic_fetch_sub_release(i, v);
235222 }
236223 #define atomic_fetch_sub_release atomic_fetch_sub_release
@@ -240,7 +227,7 @@ atomic_fetch_sub_release(int i, atomic_t *v) · 3 unmodified lines
240227 static __always_inline int
241228 atomic_fetch_sub_relaxed(int i, atomic_t *v)
242229 {
243− __atomic_check_write(v, sizeof(*v));
230+ instrument_atomic_write(v, sizeof(*v));
244231 return arch_atomic_fetch_sub_relaxed(i, v);
245232 }
246233 #define atomic_fetch_sub_relaxed atomic_fetch_sub_relaxed
@@ -250,7 +237,7 @@ atomic_fetch_sub_relaxed(int i, atomic_t *v) · 3 unmodified lines
250237 static __always_inline void
251238 atomic_inc(atomic_t *v)
252239 {
253− __atomic_check_write(v, sizeof(*v));
240+ instrument_atomic_write(v, sizeof(*v));
254241 arch_atomic_inc(v);
255242 }
256243 #define atomic_inc atomic_inc
@@ -260,7 +247,7 @@ atomic_inc(atomic_t *v) · 3 unmodified lines
260247 static __always_inline int
261248 atomic_inc_return(atomic_t *v)
262249 {
263− __atomic_check_write(v, sizeof(*v));
250+ instrument_atomic_write(v, sizeof(*v));
264251 return arch_atomic_inc_return(v);
265252 }
266253 #define atomic_inc_return atomic_inc_return
@@ -270,7 +257,7 @@ atomic_inc_return(atomic_t *v) · 3 unmodified lines
270257 static __always_inline int
271258 atomic_inc_return_acquire(atomic_t *v)
272259 {
273− __atomic_check_write(v, sizeof(*v));
260+ instrument_atomic_write(v, sizeof(*v));
274261 return arch_atomic_inc_return_acquire(v);
275262 }
276263 #define atomic_inc_return_acquire atomic_inc_return_acquire
@@ -280,7 +267,7 @@ atomic_inc_return_acquire(atomic_t *v) · 3 unmodified lines
280267 static __always_inline int
281268 atomic_inc_return_release(atomic_t *v)
282269 {
283− __atomic_check_write(v, sizeof(*v));
270+ instrument_atomic_write(v, sizeof(*v));
284271 return arch_atomic_inc_return_release(v);
285272 }
286273 #define atomic_inc_return_release atomic_inc_return_release
@@ -290,7 +277,7 @@ atomic_inc_return_release(atomic_t *v) · 3 unmodified lines
290277 static __always_inline int
291278 atomic_inc_return_relaxed(atomic_t *v)
292279 {
293− __atomic_check_write(v, sizeof(*v));
280+ instrument_atomic_write(v, sizeof(*v));
294281 return arch_atomic_inc_return_relaxed(v);
295282 }
296283 #define atomic_inc_return_relaxed atomic_inc_return_relaxed
@@ -300,7 +287,7 @@ atomic_inc_return_relaxed(atomic_t *v) · 3 unmodified lines
300287 static __always_inline int
301288 atomic_fetch_inc(atomic_t *v)
302289 {
303− __atomic_check_write(v, sizeof(*v));
290+ instrument_atomic_write(v, sizeof(*v));
304291 return arch_atomic_fetch_inc(v);
305292 }
306293 #define atomic_fetch_inc atomic_fetch_inc
@@ -310,7 +297,7 @@ atomic_fetch_inc(atomic_t *v) · 3 unmodified lines
310297 static __always_inline int
311298 atomic_fetch_inc_acquire(atomic_t *v)
312299 {
313− __atomic_check_write(v, sizeof(*v));
300+ instrument_atomic_write(v, sizeof(*v));
314301 return arch_atomic_fetch_inc_acquire(v);
315302 }
316303 #define atomic_fetch_inc_acquire atomic_fetch_inc_acquire
@@ -320,7 +307,7 @@ atomic_fetch_inc_acquire(atomic_t *v) · 3 unmodified lines
320307 static __always_inline int
321308 atomic_fetch_inc_release(atomic_t *v)
322309 {
323− __atomic_check_write(v, sizeof(*v));
310+ instrument_atomic_write(v, sizeof(*v));
324311 return arch_atomic_fetch_inc_release(v);
325312 }
326313 #define atomic_fetch_inc_release atomic_fetch_inc_release
@@ -330,7 +317,7 @@ atomic_fetch_inc_release(atomic_t *v) · 3 unmodified lines
330317 static __always_inline int
331318 atomic_fetch_inc_relaxed(atomic_t *v)
332319 {
333− __atomic_check_write(v, sizeof(*v));
320+ instrument_atomic_write(v, sizeof(*v));
334321 return arch_atomic_fetch_inc_relaxed(v);
335322 }
336323 #define atomic_fetch_inc_relaxed atomic_fetch_inc_relaxed
@@ -340,7 +327,7 @@ atomic_fetch_inc_relaxed(atomic_t *v) · 3 unmodified lines
340327 static __always_inline void
341328 atomic_dec(atomic_t *v)
342329 {
343− __atomic_check_write(v, sizeof(*v));
330+ instrument_atomic_write(v, sizeof(*v));
344331 arch_atomic_dec(v);
345332 }
346333 #define atomic_dec atomic_dec
@@ -350,7 +337,7 @@ atomic_dec(atomic_t *v) · 3 unmodified lines
350337 static __always_inline int
351338 atomic_dec_return(atomic_t *v)
352339 {
353− __atomic_check_write(v, sizeof(*v));
340+ instrument_atomic_write(v, sizeof(*v));
354341 return arch_atomic_dec_return(v);
355342 }
356343 #define atomic_dec_return atomic_dec_return
@@ -360,7 +347,7 @@ atomic_dec_return(atomic_t *v) · 3 unmodified lines
360347 static __always_inline int
361348 atomic_dec_return_acquire(atomic_t *v)
362349 {
363− __atomic_check_write(v, sizeof(*v));
350+ instrument_atomic_write(v, sizeof(*v));
364351 return arch_atomic_dec_return_acquire(v);
365352 }
366353 #define atomic_dec_return_acquire atomic_dec_return_acquire
@@ -370,7 +357,7 @@ atomic_dec_return_acquire(atomic_t *v) · 3 unmodified lines
370357 static __always_inline int
371358 atomic_dec_return_release(atomic_t *v)
372359 {
373− __atomic_check_write(v, sizeof(*v));
360+ instrument_atomic_write(v, sizeof(*v));
374361 return arch_atomic_dec_return_release(v);
375362 }
376363 #define atomic_dec_return_release atomic_dec_return_release
@@ -380,7 +367,7 @@ atomic_dec_return_release(atomic_t *v) · 3 unmodified lines
380367 static __always_inline int
381368 atomic_dec_return_relaxed(atomic_t *v)
382369 {
383− __atomic_check_write(v, sizeof(*v));
370+ instrument_atomic_write(v, sizeof(*v));
384371 return arch_atomic_dec_return_relaxed(v);
385372 }
386373 #define atomic_dec_return_relaxed atomic_dec_return_relaxed
@@ -390,7 +377,7 @@ atomic_dec_return_relaxed(atomic_t *v) · 3 unmodified lines
390377 static __always_inline int
391378 atomic_fetch_dec(atomic_t *v)
392379 {
393− __atomic_check_write(v, sizeof(*v));
380+ instrument_atomic_write(v, sizeof(*v));
394381 return arch_atomic_fetch_dec(v);
395382 }
396383 #define atomic_fetch_dec atomic_fetch_dec
@@ -400,7 +387,7 @@ atomic_fetch_dec(atomic_t *v) · 3 unmodified lines
400387 static __always_inline int
401388 atomic_fetch_dec_acquire(atomic_t *v)
402389 {
403− __atomic_check_write(v, sizeof(*v));
390+ instrument_atomic_write(v, sizeof(*v));
404391 return arch_atomic_fetch_dec_acquire(v);
405392 }
406393 #define atomic_fetch_dec_acquire atomic_fetch_dec_acquire
@@ -410,7 +397,7 @@ atomic_fetch_dec_acquire(atomic_t *v) · 3 unmodified lines
410397 static __always_inline int
411398 atomic_fetch_dec_release(atomic_t *v)
412399 {
413− __atomic_check_write(v, sizeof(*v));
400+ instrument_atomic_write(v, sizeof(*v));
414401 return arch_atomic_fetch_dec_release(v);
415402 }
416403 #define atomic_fetch_dec_release atomic_fetch_dec_release
@@ -420,7 +407,7 @@ atomic_fetch_dec_release(atomic_t *v) · 3 unmodified lines
420407 static __always_inline int
421408 atomic_fetch_dec_relaxed(atomic_t *v)
422409 {
423− __atomic_check_write(v, sizeof(*v));
410+ instrument_atomic_write(v, sizeof(*v));
424411 return arch_atomic_fetch_dec_relaxed(v);
425412 }
426413 #define atomic_fetch_dec_relaxed atomic_fetch_dec_relaxed
@@ -429,7 +416,7 @@ atomic_fetch_dec_relaxed(atomic_t *v) · 2 unmodified lines
429416 static __always_inline void
430417 atomic_and(int i, atomic_t *v)
431418 {
432− __atomic_check_write(v, sizeof(*v));
419+ instrument_atomic_write(v, sizeof(*v));
433420 arch_atomic_and(i, v);
434421 }
435422 #define atomic_and atomic_and
@@ -438,7 +425,7 @@ atomic_and(int i, atomic_t *v) · 2 unmodified lines
438425 static __always_inline int
439426 atomic_fetch_and(int i, atomic_t *v)
440427 {
441− __atomic_check_write(v, sizeof(*v));
428+ instrument_atomic_write(v, sizeof(*v));
442429 return arch_atomic_fetch_and(i, v);
443430 }
444431 #define atomic_fetch_and atomic_fetch_and
@@ -448,7 +435,7 @@ atomic_fetch_and(int i, atomic_t *v) · 3 unmodified lines
448435 static __always_inline int
449436 atomic_fetch_and_acquire(int i, atomic_t *v)
450437 {
451− __atomic_check_write(v, sizeof(*v));
438+ instrument_atomic_write(v, sizeof(*v));
452439 return arch_atomic_fetch_and_acquire(i, v);
453440 }
454441 #define atomic_fetch_and_acquire atomic_fetch_and_acquire
@@ -458,7 +445,7 @@ atomic_fetch_and_acquire(int i, atomic_t *v) · 3 unmodified lines
458445 static __always_inline int
459446 atomic_fetch_and_release(int i, atomic_t *v)
460447 {
461− __atomic_check_write(v, sizeof(*v));
448+ instrument_atomic_write(v, sizeof(*v));
462449 return arch_atomic_fetch_and_release(i, v);
463450 }
464451 #define atomic_fetch_and_release atomic_fetch_and_release
@@ -468,7 +455,7 @@ atomic_fetch_and_release(int i, atomic_t *v) · 3 unmodified lines
468455 static __always_inline int
469456 atomic_fetch_and_relaxed(int i, atomic_t *v)
470457 {
471− __atomic_check_write(v, sizeof(*v));
458+ instrument_atomic_write(v, sizeof(*v));
472459 return arch_atomic_fetch_and_relaxed(i, v);
473460 }
474461 #define atomic_fetch_and_relaxed atomic_fetch_and_relaxed
@@ -478,7 +465,7 @@ atomic_fetch_and_relaxed(int i, atomic_t *v) · 3 unmodified lines
478465 static __always_inline void
479466 atomic_andnot(int i, atomic_t *v)
480467 {
481− __atomic_check_write(v, sizeof(*v));
468+ instrument_atomic_write(v, sizeof(*v));
482469 arch_atomic_andnot(i, v);
483470 }
484471 #define atomic_andnot atomic_andnot
@@ -488,7 +475,7 @@ atomic_andnot(int i, atomic_t *v) · 3 unmodified lines
488475 static __always_inline int
489476 atomic_fetch_andnot(int i, atomic_t *v)
490477 {
491− __atomic_check_write(v, sizeof(*v));
478+ instrument_atomic_write(v, sizeof(*v));
492479 return arch_atomic_fetch_andnot(i, v);
493480 }
494481 #define atomic_fetch_andnot atomic_fetch_andnot
@@ -498,7 +485,7 @@ atomic_fetch_andnot(int i, atomic_t *v) · 3 unmodified lines
498485 static __always_inline int
499486 atomic_fetch_andnot_acquire(int i, atomic_t *v)
500487 {
501− __atomic_check_write(v, sizeof(*v));
488+ instrument_atomic_write(v, sizeof(*v));
502489 return arch_atomic_fetch_andnot_acquire(i, v);
503490 }
504491 #define atomic_fetch_andnot_acquire atomic_fetch_andnot_acquire
@@ -508,7 +495,7 @@ atomic_fetch_andnot_acquire(int i, atomic_t *v) · 3 unmodified lines
508495 static __always_inline int
509496 atomic_fetch_andnot_release(int i, atomic_t *v)
510497 {
511− __atomic_check_write(v, sizeof(*v));
498+ instrument_atomic_write(v, sizeof(*v));
512499 return arch_atomic_fetch_andnot_release(i, v);
513500 }
514501 #define atomic_fetch_andnot_release atomic_fetch_andnot_release
@@ -518,7 +505,7 @@ atomic_fetch_andnot_release(int i, atomic_t *v) · 3 unmodified lines
518505 static __always_inline int
519506 atomic_fetch_andnot_relaxed(int i, atomic_t *v)
520507 {
521− __atomic_check_write(v, sizeof(*v));
508+ instrument_atomic_write(v, sizeof(*v));
522509 return arch_atomic_fetch_andnot_relaxed(i, v);
523510 }
524511 #define atomic_fetch_andnot_relaxed atomic_fetch_andnot_relaxed
@@ -527,7 +514,7 @@ atomic_fetch_andnot_relaxed(int i, atomic_t *v) · 2 unmodified lines
527514 static __always_inline void
528515 atomic_or(int i, atomic_t *v)
529516 {
530− __atomic_check_write(v, sizeof(*v));
517+ instrument_atomic_write(v, sizeof(*v));
531518 arch_atomic_or(i, v);
532519 }
533520 #define atomic_or atomic_or
@@ -536,7 +523,7 @@ atomic_or(int i, atomic_t *v) · 2 unmodified lines
536523 static __always_inline int
537524 atomic_fetch_or(int i, atomic_t *v)
538525 {
539− __atomic_check_write(v, sizeof(*v));
526+ instrument_atomic_write(v, sizeof(*v));
540527 return arch_atomic_fetch_or(i, v);
541528 }
542529 #define atomic_fetch_or atomic_fetch_or
@@ -546,7 +533,7 @@ atomic_fetch_or(int i, atomic_t *v) · 3 unmodified lines
546533 static __always_inline int
547534 atomic_fetch_or_acquire(int i, atomic_t *v)
548535 {
549− __atomic_check_write(v, sizeof(*v));
536+ instrument_atomic_write(v, sizeof(*v));
550537 return arch_atomic_fetch_or_acquire(i, v);
551538 }
552539 #define atomic_fetch_or_acquire atomic_fetch_or_acquire
@@ -556,7 +543,7 @@ atomic_fetch_or_acquire(int i, atomic_t *v) · 3 unmodified lines
556543 static __always_inline int
557544 atomic_fetch_or_release(int i, atomic_t *v)
558545 {
559− __atomic_check_write(v, sizeof(*v));
546+ instrument_atomic_write(v, sizeof(*v));
560547 return arch_atomic_fetch_or_release(i, v);
561548 }
562549 #define atomic_fetch_or_release atomic_fetch_or_release
@@ -566,7 +553,7 @@ atomic_fetch_or_release(int i, atomic_t *v) · 3 unmodified lines
566553 static __always_inline int
567554 atomic_fetch_or_relaxed(int i, atomic_t *v)
568555 {
569− __atomic_check_write(v, sizeof(*v));
556+ instrument_atomic_write(v, sizeof(*v));
570557 return arch_atomic_fetch_or_relaxed(i, v);
571558 }
572559 #define atomic_fetch_or_relaxed atomic_fetch_or_relaxed
@@ -575,7 +562,7 @@ atomic_fetch_or_relaxed(int i, atomic_t *v) · 2 unmodified lines
575562 static __always_inline void
576563 atomic_xor(int i, atomic_t *v)
577564 {
578− __atomic_check_write(v, sizeof(*v));
565+ instrument_atomic_write(v, sizeof(*v));
579566 arch_atomic_xor(i, v);
580567 }
581568 #define atomic_xor atomic_xor
@@ -584,7 +571,7 @@ atomic_xor(int i, atomic_t *v) · 2 unmodified lines
584571 static __always_inline int
585572 atomic_fetch_xor(int i, atomic_t *v)
586573 {
587− __atomic_check_write(v, sizeof(*v));
574+ instrument_atomic_write(v, sizeof(*v));
588575 return arch_atomic_fetch_xor(i, v);
589576 }
590577 #define atomic_fetch_xor atomic_fetch_xor
@@ -594,7 +581,7 @@ atomic_fetch_xor(int i, atomic_t *v) · 3 unmodified lines
594581 static __always_inline int
595582 atomic_fetch_xor_acquire(int i, atomic_t *v)
596583 {
597− __atomic_check_write(v, sizeof(*v));
584+ instrument_atomic_write(v, sizeof(*v));
598585 return arch_atomic_fetch_xor_acquire(i, v);
599586 }
600587 #define atomic_fetch_xor_acquire atomic_fetch_xor_acquire
@@ -604,7 +591,7 @@ atomic_fetch_xor_acquire(int i, atomic_t *v) · 3 unmodified lines
604591 static __always_inline int
605592 atomic_fetch_xor_release(int i, atomic_t *v)
606593 {
607− __atomic_check_write(v, sizeof(*v));
594+ instrument_atomic_write(v, sizeof(*v));
608595 return arch_atomic_fetch_xor_release(i, v);
609596 }
610597 #define atomic_fetch_xor_release atomic_fetch_xor_release
@@ -614,7 +601,7 @@ atomic_fetch_xor_release(int i, atomic_t *v) · 3 unmodified lines
614601 static __always_inline int
615602 atomic_fetch_xor_relaxed(int i, atomic_t *v)
616603 {
617− __atomic_check_write(v, sizeof(*v));
604+ instrument_atomic_write(v, sizeof(*v));
618605 return arch_atomic_fetch_xor_relaxed(i, v);
619606 }
620607 #define atomic_fetch_xor_relaxed atomic_fetch_xor_relaxed
@@ -624,7 +611,7 @@ atomic_fetch_xor_relaxed(int i, atomic_t *v) · 3 unmodified lines
624611 static __always_inline int
625612 atomic_xchg(atomic_t *v, int i)
626613 {
627− __atomic_check_write(v, sizeof(*v));
614+ instrument_atomic_write(v, sizeof(*v));
628615 return arch_atomic_xchg(v, i);
629616 }
630617 #define atomic_xchg atomic_xchg
@@ -634,7 +621,7 @@ atomic_xchg(atomic_t *v, int i) · 3 unmodified lines
634621 static __always_inline int
635622 atomic_xchg_acquire(atomic_t *v, int i)
636623 {
637− __atomic_check_write(v, sizeof(*v));
624+ instrument_atomic_write(v, sizeof(*v));
638625 return arch_atomic_xchg_acquire(v, i);
639626 }
640627 #define atomic_xchg_acquire atomic_xchg_acquire
@@ -644,7 +631,7 @@ atomic_xchg_acquire(atomic_t *v, int i) · 3 unmodified lines
644631 static __always_inline int
645632 atomic_xchg_release(atomic_t *v, int i)
646633 {
647− __atomic_check_write(v, sizeof(*v));
634+ instrument_atomic_write(v, sizeof(*v));
648635 return arch_atomic_xchg_release(v, i);
649636 }
650637 #define atomic_xchg_release atomic_xchg_release
@@ -654,7 +641,7 @@ atomic_xchg_release(atomic_t *v, int i) · 3 unmodified lines
654641 static __always_inline int
655642 atomic_xchg_relaxed(atomic_t *v, int i)
656643 {
657− __atomic_check_write(v, sizeof(*v));
644+ instrument_atomic_write(v, sizeof(*v));
658645 return arch_atomic_xchg_relaxed(v, i);
659646 }
660647 #define atomic_xchg_relaxed atomic_xchg_relaxed
@@ -664,7 +651,7 @@ atomic_xchg_relaxed(atomic_t *v, int i) · 3 unmodified lines
664651 static __always_inline int
665652 atomic_cmpxchg(atomic_t *v, int old, int new)
666653 {
667− __atomic_check_write(v, sizeof(*v));
654+ instrument_atomic_write(v, sizeof(*v));
668655 return arch_atomic_cmpxchg(v, old, new);
669656 }
670657 #define atomic_cmpxchg atomic_cmpxchg
@@ -674,7 +661,7 @@ atomic_cmpxchg(atomic_t *v, int old, int new) · 3 unmodified lines
674661 static __always_inline int
675662 atomic_cmpxchg_acquire(atomic_t *v, int old, int new)
676663 {
677− __atomic_check_write(v, sizeof(*v));
664+ instrument_atomic_write(v, sizeof(*v));
678665 return arch_atomic_cmpxchg_acquire(v, old, new);
679666 }
680667 #define atomic_cmpxchg_acquire atomic_cmpxchg_acquire
@@ -684,7 +671,7 @@ atomic_cmpxchg_acquire(atomic_t *v, int old, int new) · 3 unmodified lines
684671 static __always_inline int
685672 atomic_cmpxchg_release(atomic_t *v, int old, int new)
686673 {
687− __atomic_check_write(v, sizeof(*v));
674+ instrument_atomic_write(v, sizeof(*v));
688675 return arch_atomic_cmpxchg_release(v, old, new);
689676 }
690677 #define atomic_cmpxchg_release atomic_cmpxchg_release
@@ -694,7 +681,7 @@ atomic_cmpxchg_release(atomic_t *v, int old, int new) · 3 unmodified lines
694681 static __always_inline int
695682 atomic_cmpxchg_relaxed(atomic_t *v, int old, int new)
696683 {
697− __atomic_check_write(v, sizeof(*v));
684+ instrument_atomic_write(v, sizeof(*v));
698685 return arch_atomic_cmpxchg_relaxed(v, old, new);
699686 }
700687 #define atomic_cmpxchg_relaxed atomic_cmpxchg_relaxed
@@ -704,8 +691,8 @@ atomic_cmpxchg_relaxed(atomic_t *v, int old, int new) · 3 unmodified lines
704691 static __always_inline bool
705692 atomic_try_cmpxchg(atomic_t *v, int *old, int new)
706693 {
707− __atomic_check_write(v, sizeof(*v));
708− __atomic_check_write(old, sizeof(*old));
694+ instrument_atomic_write(v, sizeof(*v));
695+ instrument_atomic_write(old, sizeof(*old));
709696 return arch_atomic_try_cmpxchg(v, old, new);
710697 }
711698 #define atomic_try_cmpxchg atomic_try_cmpxchg
@@ -715,8 +702,8 @@ atomic_try_cmpxchg(atomic_t *v, int *old, int new) · 3 unmodified lines
715702 static __always_inline bool
716703 atomic_try_cmpxchg_acquire(atomic_t *v, int *old, int new)
717704 {
718− __atomic_check_write(v, sizeof(*v));
719− __atomic_check_write(old, sizeof(*old));
705+ instrument_atomic_write(v, sizeof(*v));
706+ instrument_atomic_write(old, sizeof(*old));
720707 return arch_atomic_try_cmpxchg_acquire(v, old, new);
721708 }
722709 #define atomic_try_cmpxchg_acquire atomic_try_cmpxchg_acquire
@@ -726,8 +713,8 @@ atomic_try_cmpxchg_acquire(atomic_t *v, int *old, int new) · 3 unmodified lines
726713 static __always_inline bool
727714 atomic_try_cmpxchg_release(atomic_t *v, int *old, int new)
728715 {
729− __atomic_check_write(v, sizeof(*v));
730− __atomic_check_write(old, sizeof(*old));
716+ instrument_atomic_write(v, sizeof(*v));
717+ instrument_atomic_write(old, sizeof(*old));
731718 return arch_atomic_try_cmpxchg_release(v, old, new);
732719 }
733720 #define atomic_try_cmpxchg_release atomic_try_cmpxchg_release
@@ -737,8 +724,8 @@ atomic_try_cmpxchg_release(atomic_t *v, int *old, int new) · 3 unmodified lines
737724 static __always_inline bool
738725 atomic_try_cmpxchg_relaxed(atomic_t *v, int *old, int new)
739726 {
740− __atomic_check_write(v, sizeof(*v));
741− __atomic_check_write(old, sizeof(*old));
727+ instrument_atomic_write(v, sizeof(*v));
728+ instrument_atomic_write(old, sizeof(*old));
742729 return arch_atomic_try_cmpxchg_relaxed(v, old, new);
743730 }
744731 #define atomic_try_cmpxchg_relaxed atomic_try_cmpxchg_relaxed
@@ -748,7 +735,7 @@ atomic_try_cmpxchg_relaxed(atomic_t *v, int *old, int new) · 3 unmodified lines
748735 static __always_inline bool
749736 atomic_sub_and_test(int i, atomic_t *v)
750737 {
751− __atomic_check_write(v, sizeof(*v));
738+ instrument_atomic_write(v, sizeof(*v));
752739 return arch_atomic_sub_and_test(i, v);
753740 }
754741 #define atomic_sub_and_test atomic_sub_and_test
@@ -758,7 +745,7 @@ atomic_sub_and_test(int i, atomic_t *v) · 3 unmodified lines
758745 static __always_inline bool
759746 atomic_dec_and_test(atomic_t *v)
760747 {
761− __atomic_check_write(v, sizeof(*v));
748+ instrument_atomic_write(v, sizeof(*v));
762749 return arch_atomic_dec_and_test(v);
763750 }
764751 #define atomic_dec_and_test atomic_dec_and_test
@@ -768,7 +755,7 @@ atomic_dec_and_test(atomic_t *v) · 3 unmodified lines
768755 static __always_inline bool
769756 atomic_inc_and_test(atomic_t *v)
770757 {
771− __atomic_check_write(v, sizeof(*v));
758+ instrument_atomic_write(v, sizeof(*v));
772759 return arch_atomic_inc_and_test(v);
773760 }
774761 #define atomic_inc_and_test atomic_inc_and_test
@@ -778,7 +765,7 @@ atomic_inc_and_test(atomic_t *v) · 3 unmodified lines
778765 static __always_inline bool
779766 atomic_add_negative(int i, atomic_t *v)
780767 {
781− __atomic_check_write(v, sizeof(*v));
768+ instrument_atomic_write(v, sizeof(*v));
782769 return arch_atomic_add_negative(i, v);
783770 }
784771 #define atomic_add_negative atomic_add_negative
@@ -788,7 +775,7 @@ atomic_add_negative(int i, atomic_t *v) · 3 unmodified lines
788775 static __always_inline int
789776 atomic_fetch_add_unless(atomic_t *v, int a, int u)
790777 {
791− __atomic_check_write(v, sizeof(*v));
778+ instrument_atomic_write(v, sizeof(*v));
792779 return arch_atomic_fetch_add_unless(v, a, u);
793780 }
794781 #define atomic_fetch_add_unless atomic_fetch_add_unless
@@ -798,7 +785,7 @@ atomic_fetch_add_unless(atomic_t *v, int a, int u) · 3 unmodified lines
798785 static __always_inline bool
799786 atomic_add_unless(atomic_t *v, int a, int u)
800787 {
801− __atomic_check_write(v, sizeof(*v));
788+ instrument_atomic_write(v, sizeof(*v));
802789 return arch_atomic_add_unless(v, a, u);
803790 }
804791 #define atomic_add_unless atomic_add_unless
@@ -808,7 +795,7 @@ atomic_add_unless(atomic_t *v, int a, int u) · 3 unmodified lines
808795 static __always_inline bool
809796 atomic_inc_not_zero(atomic_t *v)
810797 {
811− __atomic_check_write(v, sizeof(*v));
798+ instrument_atomic_write(v, sizeof(*v));
812799 return arch_atomic_inc_not_zero(v);
813800 }
814801 #define atomic_inc_not_zero atomic_inc_not_zero
@@ -818,7 +805,7 @@ atomic_inc_not_zero(atomic_t *v) · 3 unmodified lines
818805 static __always_inline bool
819806 atomic_inc_unless_negative(atomic_t *v)
820807 {
821− __atomic_check_write(v, sizeof(*v));
808+ instrument_atomic_write(v, sizeof(*v));
822809 return arch_atomic_inc_unless_negative(v);
823810 }
824811 #define atomic_inc_unless_negative atomic_inc_unless_negative
@@ -828,7 +815,7 @@ atomic_inc_unless_negative(atomic_t *v) · 3 unmodified lines
828815 static __always_inline bool
829816 atomic_dec_unless_positive(atomic_t *v)
830817 {
831− __atomic_check_write(v, sizeof(*v));
818+ instrument_atomic_write(v, sizeof(*v));
832819 return arch_atomic_dec_unless_positive(v);
833820 }
834821 #define atomic_dec_unless_positive atomic_dec_unless_positive
@@ -838,7 +825,7 @@ atomic_dec_unless_positive(atomic_t *v) · 3 unmodified lines
838825 static __always_inline int
839826 atomic_dec_if_positive(atomic_t *v)
840827 {
841− __atomic_check_write(v, sizeof(*v));
828+ instrument_atomic_write(v, sizeof(*v));
842829 return arch_atomic_dec_if_positive(v);
843830 }
844831 #define atomic_dec_if_positive atomic_dec_if_positive
@@ -847,7 +834,7 @@ atomic_dec_if_positive(atomic_t *v) · 2 unmodified lines
847834 static __always_inline s64
848835 atomic64_read(const atomic64_t *v)
849836 {
850− __atomic_check_read(v, sizeof(*v));
837+ instrument_atomic_read(v, sizeof(*v));
851838 return arch_atomic64_read(v);
852839 }
853840 #define atomic64_read atomic64_read
@@ -856,7 +843,7 @@ atomic64_read(const atomic64_t *v) · 2 unmodified lines
856843 static __always_inline s64
857844 atomic64_read_acquire(const atomic64_t *v)
858845 {
859− __atomic_check_read(v, sizeof(*v));
846+ instrument_atomic_read(v, sizeof(*v));
860847 return arch_atomic64_read_acquire(v);
861848 }
862849 #define atomic64_read_acquire atomic64_read_acquire
@@ -865,7 +852,7 @@ atomic64_read_acquire(const atomic64_t *v) · 2 unmodified lines
865852 static __always_inline void
866853 atomic64_set(atomic64_t *v, s64 i)
867854 {
868− __atomic_check_write(v, sizeof(*v));
855+ instrument_atomic_write(v, sizeof(*v));
869856 arch_atomic64_set(v, i);
870857 }
871858 #define atomic64_set atomic64_set
@@ -874,7 +861,7 @@ atomic64_set(atomic64_t *v, s64 i) · 2 unmodified lines
874861 static __always_inline void
875862 atomic64_set_release(atomic64_t *v, s64 i)
876863 {
877− __atomic_check_write(v, sizeof(*v));
864+ instrument_atomic_write(v, sizeof(*v));
878865 arch_atomic64_set_release(v, i);
879866 }
880867 #define atomic64_set_release atomic64_set_release
@@ -883,7 +870,7 @@ atomic64_set_release(atomic64_t *v, s64 i) · 2 unmodified lines
883870 static __always_inline void
884871 atomic64_add(s64 i, atomic64_t *v)
885872 {
886− __atomic_check_write(v, sizeof(*v));
873+ instrument_atomic_write(v, sizeof(*v));
887874 arch_atomic64_add(i, v);
888875 }
889876 #define atomic64_add atomic64_add
@@ -892,7 +879,7 @@ atomic64_add(s64 i, atomic64_t *v) · 2 unmodified lines
892879 static __always_inline s64
893880 atomic64_add_return(s64 i, atomic64_t *v)
894881 {
895− __atomic_check_write(v, sizeof(*v));
882+ instrument_atomic_write(v, sizeof(*v));
896883 return arch_atomic64_add_return(i, v);
897884 }
898885 #define atomic64_add_return atomic64_add_return
@@ -902,7 +889,7 @@ atomic64_add_return(s64 i, atomic64_t *v) · 3 unmodified lines
902889 static __always_inline s64
903890 atomic64_add_return_acquire(s64 i, atomic64_t *v)
904891 {
905− __atomic_check_write(v, sizeof(*v));
892+ instrument_atomic_write(v, sizeof(*v));
906893 return arch_atomic64_add_return_acquire(i, v);
907894 }
908895 #define atomic64_add_return_acquire atomic64_add_return_acquire
@@ -912,7 +899,7 @@ atomic64_add_return_acquire(s64 i, atomic64_t *v) · 3 unmodified lines
912899 static __always_inline s64
913900 atomic64_add_return_release(s64 i, atomic64_t *v)
914901 {
915− __atomic_check_write(v, sizeof(*v));
902+ instrument_atomic_write(v, sizeof(*v));
916903 return arch_atomic64_add_return_release(i, v);
917904 }
918905 #define atomic64_add_return_release atomic64_add_return_release
@@ -922,7 +909,7 @@ atomic64_add_return_release(s64 i, atomic64_t *v) · 3 unmodified lines
922909 static __always_inline s64
923910 atomic64_add_return_relaxed(s64 i, atomic64_t *v)
924911 {
925− __atomic_check_write(v, sizeof(*v));
912+ instrument_atomic_write(v, sizeof(*v));
926913 return arch_atomic64_add_return_relaxed(i, v);
927914 }
928915 #define atomic64_add_return_relaxed atomic64_add_return_relaxed
@@ -932,7 +919,7 @@ atomic64_add_return_relaxed(s64 i, atomic64_t *v) · 3 unmodified lines
932919 static __always_inline s64
933920 atomic64_fetch_add(s64 i, atomic64_t *v)
934921 {
935− __atomic_check_write(v, sizeof(*v));
922+ instrument_atomic_write(v, sizeof(*v));
936923 return arch_atomic64_fetch_add(i, v);
937924 }
938925 #define atomic64_fetch_add atomic64_fetch_add
@@ -942,7 +929,7 @@ atomic64_fetch_add(s64 i, atomic64_t *v) · 3 unmodified lines
942929 static __always_inline s64
943930 atomic64_fetch_add_acquire(s64 i, atomic64_t *v)
944931 {
945− __atomic_check_write(v, sizeof(*v));
932+ instrument_atomic_write(v, sizeof(*v));
946933 return arch_atomic64_fetch_add_acquire(i, v);
947934 }
948935 #define atomic64_fetch_add_acquire atomic64_fetch_add_acquire
@@ -952,7 +939,7 @@ atomic64_fetch_add_acquire(s64 i, atomic64_t *v) · 3 unmodified lines
952939 static __always_inline s64
953940 atomic64_fetch_add_release(s64 i, atomic64_t *v)
954941 {
955− __atomic_check_write(v, sizeof(*v));
942+ instrument_atomic_write(v, sizeof(*v));
956943 return arch_atomic64_fetch_add_release(i, v);
957944 }
958945 #define atomic64_fetch_add_release atomic64_fetch_add_release
@@ -962,7 +949,7 @@ atomic64_fetch_add_release(s64 i, atomic64_t *v) · 3 unmodified lines
962949 static __always_inline s64
963950 atomic64_fetch_add_relaxed(s64 i, atomic64_t *v)
964951 {
965− __atomic_check_write(v, sizeof(*v));
952+ instrument_atomic_write(v, sizeof(*v));
966953 return arch_atomic64_fetch_add_relaxed(i, v);
967954 }
968955 #define atomic64_fetch_add_relaxed atomic64_fetch_add_relaxed
@@ -971,7 +958,7 @@ atomic64_fetch_add_relaxed(s64 i, atomic64_t *v) · 2 unmodified lines
971958 static __always_inline void
972959 atomic64_sub(s64 i, atomic64_t *v)
973960 {
974− __atomic_check_write(v, sizeof(*v));
961+ instrument_atomic_write(v, sizeof(*v));
975962 arch_atomic64_sub(i, v);
976963 }
977964 #define atomic64_sub atomic64_sub
@@ -980,7 +967,7 @@ atomic64_sub(s64 i, atomic64_t *v) · 2 unmodified lines
980967 static __always_inline s64
981968 atomic64_sub_return(s64 i, atomic64_t *v)
982969 {
983− __atomic_check_write(v, sizeof(*v));
970+ instrument_atomic_write(v, sizeof(*v));
984971 return arch_atomic64_sub_return(i, v);
985972 }
986973 #define atomic64_sub_return atomic64_sub_return
@@ -990,7 +977,7 @@ atomic64_sub_return(s64 i, atomic64_t *v) · 3 unmodified lines
990977 static __always_inline s64
991978 atomic64_sub_return_acquire(s64 i, atomic64_t *v)
992979 {
993− __atomic_check_write(v, sizeof(*v));
980+ instrument_atomic_write(v, sizeof(*v));
994981 return arch_atomic64_sub_return_acquire(i, v);
995982 }
996983 #define atomic64_sub_return_acquire atomic64_sub_return_acquire
@@ -1000,7 +987,7 @@ atomic64_sub_return_acquire(s64 i, atomic64_t *v) · 3 unmodified lines
1000987 static __always_inline s64
1001988 atomic64_sub_return_release(s64 i, atomic64_t *v)
1002989 {
1003− __atomic_check_write(v, sizeof(*v));
990+ instrument_atomic_write(v, sizeof(*v));
1004991 return arch_atomic64_sub_return_release(i, v);
1005992 }
1006993 #define atomic64_sub_return_release atomic64_sub_return_release
@@ -1010,7 +997,7 @@ atomic64_sub_return_release(s64 i, atomic64_t *v) · 3 unmodified lines
1010997 static __always_inline s64
1011998 atomic64_sub_return_relaxed(s64 i, atomic64_t *v)
1012999 {
1013− __atomic_check_write(v, sizeof(*v));
1000+ instrument_atomic_write(v, sizeof(*v));
10141001 return arch_atomic64_sub_return_relaxed(i, v);
10151002 }
10161003 #define atomic64_sub_return_relaxed atomic64_sub_return_relaxed
@@ -1020,7 +1007,7 @@ atomic64_sub_return_relaxed(s64 i, atomic64_t *v) · 3 unmodified lines
10201007 static __always_inline s64
10211008 atomic64_fetch_sub(s64 i, atomic64_t *v)
10221009 {
1023− __atomic_check_write(v, sizeof(*v));
1010+ instrument_atomic_write(v, sizeof(*v));
10241011 return arch_atomic64_fetch_sub(i, v);
10251012 }
10261013 #define atomic64_fetch_sub atomic64_fetch_sub
@@ -1030,7 +1017,7 @@ atomic64_fetch_sub(s64 i, atomic64_t *v) · 3 unmodified lines
10301017 static __always_inline s64
10311018 atomic64_fetch_sub_acquire(s64 i, atomic64_t *v)
10321019 {
1033− __atomic_check_write(v, sizeof(*v));
1020+ instrument_atomic_write(v, sizeof(*v));
10341021 return arch_atomic64_fetch_sub_acquire(i, v);
10351022 }
10361023 #define atomic64_fetch_sub_acquire atomic64_fetch_sub_acquire
@@ -1040,7 +1027,7 @@ atomic64_fetch_sub_acquire(s64 i, atomic64_t *v) · 3 unmodified lines
10401027 static __always_inline s64
10411028 atomic64_fetch_sub_release(s64 i, atomic64_t *v)
10421029 {
1043− __atomic_check_write(v, sizeof(*v));
1030+ instrument_atomic_write(v, sizeof(*v));
10441031 return arch_atomic64_fetch_sub_release(i, v);
10451032 }
10461033 #define atomic64_fetch_sub_release atomic64_fetch_sub_release
@@ -1050,7 +1037,7 @@ atomic64_fetch_sub_release(s64 i, atomic64_t *v) · 3 unmodified lines
10501037 static __always_inline s64
10511038 atomic64_fetch_sub_relaxed(s64 i, atomic64_t *v)
10521039 {
1053− __atomic_check_write(v, sizeof(*v));
1040+ instrument_atomic_write(v, sizeof(*v));
10541041 return arch_atomic64_fetch_sub_relaxed(i, v);
10551042 }
10561043 #define atomic64_fetch_sub_relaxed atomic64_fetch_sub_relaxed
@@ -1060,7 +1047,7 @@ atomic64_fetch_sub_relaxed(s64 i, atomic64_t *v) · 3 unmodified lines
10601047 static __always_inline void
10611048 atomic64_inc(atomic64_t *v)
10621049 {
1063− __atomic_check_write(v, sizeof(*v));
1050+ instrument_atomic_write(v, sizeof(*v));
10641051 arch_atomic64_inc(v);
10651052 }
10661053 #define atomic64_inc atomic64_inc
@@ -1070,7 +1057,7 @@ atomic64_inc(atomic64_t *v) · 3 unmodified lines
10701057 static __always_inline s64
10711058 atomic64_inc_return(atomic64_t *v)
10721059 {
1073− __atomic_check_write(v, sizeof(*v));
1060+ instrument_atomic_write(v, sizeof(*v));
10741061 return arch_atomic64_inc_return(v);
10751062 }
10761063 #define atomic64_inc_return atomic64_inc_return
@@ -1080,7 +1067,7 @@ atomic64_inc_return(atomic64_t *v) · 3 unmodified lines
10801067 static __always_inline s64
10811068 atomic64_inc_return_acquire(atomic64_t *v)
10821069 {
1083− __atomic_check_write(v, sizeof(*v));
1070+ instrument_atomic_write(v, sizeof(*v));
10841071 return arch_atomic64_inc_return_acquire(v);
10851072 }
10861073 #define atomic64_inc_return_acquire atomic64_inc_return_acquire
@@ -1090,7 +1077,7 @@ atomic64_inc_return_acquire(atomic64_t *v) · 3 unmodified lines
10901077 static __always_inline s64
10911078 atomic64_inc_return_release(atomic64_t *v)
10921079 {
1093− __atomic_check_write(v, sizeof(*v));
1080+ instrument_atomic_write(v, sizeof(*v));
10941081 return arch_atomic64_inc_return_release(v);
10951082 }
10961083 #define atomic64_inc_return_release atomic64_inc_return_release
@@ -1100,7 +1087,7 @@ atomic64_inc_return_release(atomic64_t *v) · 3 unmodified lines
11001087 static __always_inline s64
11011088 atomic64_inc_return_relaxed(atomic64_t *v)
11021089 {
1103− __atomic_check_write(v, sizeof(*v));
1090+ instrument_atomic_write(v, sizeof(*v));
11041091 return arch_atomic64_inc_return_relaxed(v);
11051092 }
11061093 #define atomic64_inc_return_relaxed atomic64_inc_return_relaxed
@@ -1110,7 +1097,7 @@ atomic64_inc_return_relaxed(atomic64_t *v) · 3 unmodified lines
11101097 static __always_inline s64
11111098 atomic64_fetch_inc(atomic64_t *v)
11121099 {
1113− __atomic_check_write(v, sizeof(*v));
1100+ instrument_atomic_write(v, sizeof(*v));
11141101 return arch_atomic64_fetch_inc(v);
11151102 }
11161103 #define atomic64_fetch_inc atomic64_fetch_inc
@@ -1120,7 +1107,7 @@ atomic64_fetch_inc(atomic64_t *v) · 3 unmodified lines
11201107 static __always_inline s64
11211108 atomic64_fetch_inc_acquire(atomic64_t *v)
11221109 {
1123− __atomic_check_write(v, sizeof(*v));
1110+ instrument_atomic_write(v, sizeof(*v));
11241111 return arch_atomic64_fetch_inc_acquire(v);
11251112 }
11261113 #define atomic64_fetch_inc_acquire atomic64_fetch_inc_acquire
@@ -1130,7 +1117,7 @@ atomic64_fetch_inc_acquire(atomic64_t *v) · 3 unmodified lines
11301117 static __always_inline s64
11311118 atomic64_fetch_inc_release(atomic64_t *v)
11321119 {
1133− __atomic_check_write(v, sizeof(*v));
1120+ instrument_atomic_write(v, sizeof(*v));
11341121 return arch_atomic64_fetch_inc_release(v);
11351122 }
11361123 #define atomic64_fetch_inc_release atomic64_fetch_inc_release
@@ -1140,7 +1127,7 @@ atomic64_fetch_inc_release(atomic64_t *v) · 3 unmodified lines
11401127 static __always_inline s64
11411128 atomic64_fetch_inc_relaxed(atomic64_t *v)
11421129 {
1143− __atomic_check_write(v, sizeof(*v));
1130+ instrument_atomic_write(v, sizeof(*v));
11441131 return arch_atomic64_fetch_inc_relaxed(v);
11451132 }
11461133 #define atomic64_fetch_inc_relaxed atomic64_fetch_inc_relaxed
@@ -1150,7 +1137,7 @@ atomic64_fetch_inc_relaxed(atomic64_t *v) · 3 unmodified lines
11501137 static __always_inline void
11511138 atomic64_dec(atomic64_t *v)
11521139 {
1153− __atomic_check_write(v, sizeof(*v));
1140+ instrument_atomic_write(v, sizeof(*v));
11541141 arch_atomic64_dec(v);
11551142 }
11561143 #define atomic64_dec atomic64_dec
@@ -1160,7 +1147,7 @@ atomic64_dec(atomic64_t *v) · 3 unmodified lines
11601147 static __always_inline s64
11611148 atomic64_dec_return(atomic64_t *v)
11621149 {
1163− __atomic_check_write(v, sizeof(*v));
1150+ instrument_atomic_write(v, sizeof(*v));
11641151 return arch_atomic64_dec_return(v);
11651152 }
11661153 #define atomic64_dec_return atomic64_dec_return
@@ -1170,7 +1157,7 @@ atomic64_dec_return(atomic64_t *v) · 3 unmodified lines
11701157 static __always_inline s64
11711158 atomic64_dec_return_acquire(atomic64_t *v)
11721159 {
1173− __atomic_check_write(v, sizeof(*v));
1160+ instrument_atomic_write(v, sizeof(*v));
11741161 return arch_atomic64_dec_return_acquire(v);
11751162 }
11761163 #define atomic64_dec_return_acquire atomic64_dec_return_acquire
@@ -1180,7 +1167,7 @@ atomic64_dec_return_acquire(atomic64_t *v) · 3 unmodified lines
11801167 static __always_inline s64
11811168 atomic64_dec_return_release(atomic64_t *v)
11821169 {
1183− __atomic_check_write(v, sizeof(*v));
1170+ instrument_atomic_write(v, sizeof(*v));
11841171 return arch_atomic64_dec_return_release(v);
11851172 }
11861173 #define atomic64_dec_return_release atomic64_dec_return_release
@@ -1190,7 +1177,7 @@ atomic64_dec_return_release(atomic64_t *v) · 3 unmodified lines
11901177 static __always_inline s64
11911178 atomic64_dec_return_relaxed(atomic64_t *v)
11921179 {
1193− __atomic_check_write(v, sizeof(*v));
1180+ instrument_atomic_write(v, sizeof(*v));
11941181 return arch_atomic64_dec_return_relaxed(v);
11951182 }
11961183 #define atomic64_dec_return_relaxed atomic64_dec_return_relaxed
@@ -1200,7 +1187,7 @@ atomic64_dec_return_relaxed(atomic64_t *v) · 3 unmodified lines
12001187 static __always_inline s64
12011188 atomic64_fetch_dec(atomic64_t *v)
12021189 {
1203− __atomic_check_write(v, sizeof(*v));
1190+ instrument_atomic_write(v, sizeof(*v));
12041191 return arch_atomic64_fetch_dec(v);
12051192 }
12061193 #define atomic64_fetch_dec atomic64_fetch_dec
@@ -1210,7 +1197,7 @@ atomic64_fetch_dec(atomic64_t *v) · 3 unmodified lines
12101197 static __always_inline s64
12111198 atomic64_fetch_dec_acquire(atomic64_t *v)
12121199 {
1213− __atomic_check_write(v, sizeof(*v));
1200+ instrument_atomic_write(v, sizeof(*v));
12141201 return arch_atomic64_fetch_dec_acquire(v);
12151202 }
12161203 #define atomic64_fetch_dec_acquire atomic64_fetch_dec_acquire
@@ -1220,7 +1207,7 @@ atomic64_fetch_dec_acquire(atomic64_t *v) · 3 unmodified lines
12201207 static __always_inline s64
12211208 atomic64_fetch_dec_release(atomic64_t *v)
12221209 {
1223− __atomic_check_write(v, sizeof(*v));
1210+ instrument_atomic_write(v, sizeof(*v));
12241211 return arch_atomic64_fetch_dec_release(v);
12251212 }
12261213 #define atomic64_fetch_dec_release atomic64_fetch_dec_release
@@ -1230,7 +1217,7 @@ atomic64_fetch_dec_release(atomic64_t *v) · 3 unmodified lines
12301217 static __always_inline s64
12311218 atomic64_fetch_dec_relaxed(atomic64_t *v)
12321219 {
1233− __atomic_check_write(v, sizeof(*v));
1220+ instrument_atomic_write(v, sizeof(*v));
12341221 return arch_atomic64_fetch_dec_relaxed(v);
12351222 }
12361223 #define atomic64_fetch_dec_relaxed atomic64_fetch_dec_relaxed
@@ -1239,7 +1226,7 @@ atomic64_fetch_dec_relaxed(atomic64_t *v) · 2 unmodified lines
12391226 static __always_inline void
12401227 atomic64_and(s64 i, atomic64_t *v)
12411228 {
1242− __atomic_check_write(v, sizeof(*v));
1229+ instrument_atomic_write(v, sizeof(*v));
12431230 arch_atomic64_and(i, v);
12441231 }
12451232 #define atomic64_and atomic64_and
@@ -1248,7 +1235,7 @@ atomic64_and(s64 i, atomic64_t *v) · 2 unmodified lines
12481235 static __always_inline s64
12491236 atomic64_fetch_and(s64 i, atomic64_t *v)
12501237 {
1251− __atomic_check_write(v, sizeof(*v));
1238+ instrument_atomic_write(v, sizeof(*v));
12521239 return arch_atomic64_fetch_and(i, v);
12531240 }
12541241 #define atomic64_fetch_and atomic64_fetch_and
@@ -1258,7 +1245,7 @@ atomic64_fetch_and(s64 i, atomic64_t *v) · 3 unmodified lines
12581245 static __always_inline s64
12591246 atomic64_fetch_and_acquire(s64 i, atomic64_t *v)
12601247 {
1261− __atomic_check_write(v, sizeof(*v));
1248+ instrument_atomic_write(v, sizeof(*v));
12621249 return arch_atomic64_fetch_and_acquire(i, v);
12631250 }
12641251 #define atomic64_fetch_and_acquire atomic64_fetch_and_acquire
@@ -1268,7 +1255,7 @@ atomic64_fetch_and_acquire(s64 i, atomic64_t *v) · 3 unmodified lines
12681255 static __always_inline s64
12691256 atomic64_fetch_and_release(s64 i, atomic64_t *v)
12701257 {
1271− __atomic_check_write(v, sizeof(*v));
1258+ instrument_atomic_write(v, sizeof(*v));
12721259 return arch_atomic64_fetch_and_release(i, v);
12731260 }
12741261 #define atomic64_fetch_and_release atomic64_fetch_and_release
@@ -1278,7 +1265,7 @@ atomic64_fetch_and_release(s64 i, atomic64_t *v) · 3 unmodified lines
12781265 static __always_inline s64
12791266 atomic64_fetch_and_relaxed(s64 i, atomic64_t *v)
12801267 {
1281− __atomic_check_write(v, sizeof(*v));
1268+ instrument_atomic_write(v, sizeof(*v));
12821269 return arch_atomic64_fetch_and_relaxed(i, v);
12831270 }
12841271 #define atomic64_fetch_and_relaxed atomic64_fetch_and_relaxed
@@ -1288,7 +1275,7 @@ atomic64_fetch_and_relaxed(s64 i, atomic64_t *v) · 3 unmodified lines
12881275 static __always_inline void
12891276 atomic64_andnot(s64 i, atomic64_t *v)
12901277 {
1291− __atomic_check_write(v, sizeof(*v));
1278+ instrument_atomic_write(v, sizeof(*v));
12921279 arch_atomic64_andnot(i, v);
12931280 }
12941281 #define atomic64_andnot atomic64_andnot
@@ -1298,7 +1285,7 @@ atomic64_andnot(s64 i, atomic64_t *v) · 3 unmodified lines
12981285 static __always_inline s64
12991286 atomic64_fetch_andnot(s64 i, atomic64_t *v)
13001287 {
1301− __atomic_check_write(v, sizeof(*v));
1288+ instrument_atomic_write(v, sizeof(*v));
13021289 return arch_atomic64_fetch_andnot(i, v);
13031290 }
13041291 #define atomic64_fetch_andnot atomic64_fetch_andnot
@@ -1308,7 +1295,7 @@ atomic64_fetch_andnot(s64 i, atomic64_t *v) · 3 unmodified lines
13081295 static __always_inline s64
13091296 atomic64_fetch_andnot_acquire(s64 i, atomic64_t *v)
13101297 {
1311− __atomic_check_write(v, sizeof(*v));
1298+ instrument_atomic_write(v, sizeof(*v));
13121299 return arch_atomic64_fetch_andnot_acquire(i, v);
13131300 }
13141301 #define atomic64_fetch_andnot_acquire atomic64_fetch_andnot_acquire
@@ -1318,7 +1305,7 @@ atomic64_fetch_andnot_acquire(s64 i, atomic64_t *v) · 3 unmodified lines
13181305 static __always_inline s64
13191306 atomic64_fetch_andnot_release(s64 i, atomic64_t *v)
13201307 {
1321− __atomic_check_write(v, sizeof(*v));
1308+ instrument_atomic_write(v, sizeof(*v));
13221309 return arch_atomic64_fetch_andnot_release(i, v);
13231310 }
13241311 #define atomic64_fetch_andnot_release atomic64_fetch_andnot_release
@@ -1328,7 +1315,7 @@ atomic64_fetch_andnot_release(s64 i, atomic64_t *v) · 3 unmodified lines
13281315 static __always_inline s64
13291316 atomic64_fetch_andnot_relaxed(s64 i, atomic64_t *v)
13301317 {
1331− __atomic_check_write(v, sizeof(*v));
1318+ instrument_atomic_write(v, sizeof(*v));
13321319 return arch_atomic64_fetch_andnot_relaxed(i, v);
13331320 }
13341321 #define atomic64_fetch_andnot_relaxed atomic64_fetch_andnot_relaxed
@@ -1337,7 +1324,7 @@ atomic64_fetch_andnot_relaxed(s64 i, atomic64_t *v) · 2 unmodified lines
13371324 static __always_inline void
13381325 atomic64_or(s64 i, atomic64_t *v)
13391326 {
1340− __atomic_check_write(v, sizeof(*v));
1327+ instrument_atomic_write(v, sizeof(*v));
13411328 arch_atomic64_or(i, v);
13421329 }
13431330 #define atomic64_or atomic64_or
@@ -1346,7 +1333,7 @@ atomic64_or(s64 i, atomic64_t *v) · 2 unmodified lines
13461333 static __always_inline s64
13471334 atomic64_fetch_or(s64 i, atomic64_t *v)
13481335 {
1349− __atomic_check_write(v, sizeof(*v));
1336+ instrument_atomic_write(v, sizeof(*v));
13501337 return arch_atomic64_fetch_or(i, v);
13511338 }
13521339 #define atomic64_fetch_or atomic64_fetch_or
@@ -1356,7 +1343,7 @@ atomic64_fetch_or(s64 i, atomic64_t *v) · 3 unmodified lines
13561343 static __always_inline s64
13571344 atomic64_fetch_or_acquire(s64 i, atomic64_t *v)
13581345 {
1359− __atomic_check_write(v, sizeof(*v));
1346+ instrument_atomic_write(v, sizeof(*v));
13601347 return arch_atomic64_fetch_or_acquire(i, v);
13611348 }
13621349 #define atomic64_fetch_or_acquire atomic64_fetch_or_acquire
@@ -1366,7 +1353,7 @@ atomic64_fetch_or_acquire(s64 i, atomic64_t *v) · 3 unmodified lines
13661353 static __always_inline s64
13671354 atomic64_fetch_or_release(s64 i, atomic64_t *v)
13681355 {
1369− __atomic_check_write(v, sizeof(*v));
1356+ instrument_atomic_write(v, sizeof(*v));
13701357 return arch_atomic64_fetch_or_release(i, v);
13711358 }
13721359 #define atomic64_fetch_or_release atomic64_fetch_or_release
@@ -1376,7 +1363,7 @@ atomic64_fetch_or_release(s64 i, atomic64_t *v) · 3 unmodified lines
13761363 static __always_inline s64
13771364 atomic64_fetch_or_relaxed(s64 i, atomic64_t *v)
13781365 {
1379− __atomic_check_write(v, sizeof(*v));
1366+ instrument_atomic_write(v, sizeof(*v));
13801367 return arch_atomic64_fetch_or_relaxed(i, v);
13811368 }
13821369 #define atomic64_fetch_or_relaxed atomic64_fetch_or_relaxed
@@ -1385,7 +1372,7 @@ atomic64_fetch_or_relaxed(s64 i, atomic64_t *v) · 2 unmodified lines
13851372 static __always_inline void
13861373 atomic64_xor(s64 i, atomic64_t *v)
13871374 {
1388− __atomic_check_write(v, sizeof(*v));
1375+ instrument_atomic_write(v, sizeof(*v));
13891376 arch_atomic64_xor(i, v);
13901377 }
13911378 #define atomic64_xor atomic64_xor
@@ -1394,7 +1381,7 @@ atomic64_xor(s64 i, atomic64_t *v) · 2 unmodified lines
13941381 static __always_inline s64
13951382 atomic64_fetch_xor(s64 i, atomic64_t *v)
13961383 {
1397− __atomic_check_write(v, sizeof(*v));
1384+ instrument_atomic_write(v, sizeof(*v));
13981385 return arch_atomic64_fetch_xor(i, v);
13991386 }
14001387 #define atomic64_fetch_xor atomic64_fetch_xor
@@ -1404,7 +1391,7 @@ atomic64_fetch_xor(s64 i, atomic64_t *v) · 3 unmodified lines
14041391 static __always_inline s64
14051392 atomic64_fetch_xor_acquire(s64 i, atomic64_t *v)
14061393 {
1407− __atomic_check_write(v, sizeof(*v));
1394+ instrument_atomic_write(v, sizeof(*v));
14081395 return arch_atomic64_fetch_xor_acquire(i, v);
14091396 }
14101397 #define atomic64_fetch_xor_acquire atomic64_fetch_xor_acquire
@@ -1414,7 +1401,7 @@ atomic64_fetch_xor_acquire(s64 i, atomic64_t *v) · 3 unmodified lines
14141401 static __always_inline s64
14151402 atomic64_fetch_xor_release(s64 i, atomic64_t *v)
14161403 {
1417− __atomic_check_write(v, sizeof(*v));
1404+ instrument_atomic_write(v, sizeof(*v));
14181405 return arch_atomic64_fetch_xor_release(i, v);
14191406 }
14201407 #define atomic64_fetch_xor_release atomic64_fetch_xor_release
@@ -1424,7 +1411,7 @@ atomic64_fetch_xor_release(s64 i, atomic64_t *v) · 3 unmodified lines
14241411 static __always_inline s64
14251412 atomic64_fetch_xor_relaxed(s64 i, atomic64_t *v)
14261413 {
1427− __atomic_check_write(v, sizeof(*v));
1414+ instrument_atomic_write(v, sizeof(*v));
14281415 return arch_atomic64_fetch_xor_relaxed(i, v);
14291416 }
14301417 #define atomic64_fetch_xor_relaxed atomic64_fetch_xor_relaxed
@@ -1434,7 +1421,7 @@ atomic64_fetch_xor_relaxed(s64 i, atomic64_t *v) · 3 unmodified lines
14341421 static __always_inline s64
14351422 atomic64_xchg(atomic64_t *v, s64 i)
14361423 {
1437− __atomic_check_write(v, sizeof(*v));
1424+ instrument_atomic_write(v, sizeof(*v));
14381425 return arch_atomic64_xchg(v, i);
14391426 }
14401427 #define atomic64_xchg atomic64_xchg
@@ -1444,7 +1431,7 @@ atomic64_xchg(atomic64_t *v, s64 i) · 3 unmodified lines
14441431 static __always_inline s64
14451432 atomic64_xchg_acquire(atomic64_t *v, s64 i)
14461433 {
1447− __atomic_check_write(v, sizeof(*v));
1434+ instrument_atomic_write(v, sizeof(*v));
14481435 return arch_atomic64_xchg_acquire(v, i);
14491436 }
14501437 #define atomic64_xchg_acquire atomic64_xchg_acquire
@@ -1454,7 +1441,7 @@ atomic64_xchg_acquire(atomic64_t *v, s64 i) · 3 unmodified lines
14541441 static __always_inline s64
14551442 atomic64_xchg_release(atomic64_t *v, s64 i)
14561443 {
1457− __atomic_check_write(v, sizeof(*v));
1444+ instrument_atomic_write(v, sizeof(*v));
14581445 return arch_atomic64_xchg_release(v, i);
14591446 }
14601447 #define atomic64_xchg_release atomic64_xchg_release
@@ -1464,7 +1451,7 @@ atomic64_xchg_release(atomic64_t *v, s64 i) · 3 unmodified lines
14641451 static __always_inline s64
14651452 atomic64_xchg_relaxed(atomic64_t *v, s64 i)
14661453 {
1467− __atomic_check_write(v, sizeof(*v));
1454+ instrument_atomic_write(v, sizeof(*v));
14681455 return arch_atomic64_xchg_relaxed(v, i);
14691456 }
14701457 #define atomic64_xchg_relaxed atomic64_xchg_relaxed
@@ -1474,7 +1461,7 @@ atomic64_xchg_relaxed(atomic64_t *v, s64 i) · 3 unmodified lines
14741461 static __always_inline s64
14751462 atomic64_cmpxchg(atomic64_t *v, s64 old, s64 new)
14761463 {
1477− __atomic_check_write(v, sizeof(*v));
1464+ instrument_atomic_write(v, sizeof(*v));
14781465 return arch_atomic64_cmpxchg(v, old, new);
14791466 }
14801467 #define atomic64_cmpxchg atomic64_cmpxchg
@@ -1484,7 +1471,7 @@ atomic64_cmpxchg(atomic64_t *v, s64 old, s64 new) · 3 unmodified lines
14841471 static __always_inline s64
14851472 atomic64_cmpxchg_acquire(atomic64_t *v, s64 old, s64 new)
14861473 {
1487− __atomic_check_write(v, sizeof(*v));
1474+ instrument_atomic_write(v, sizeof(*v));
14881475 return arch_atomic64_cmpxchg_acquire(v, old, new);
14891476 }
14901477 #define atomic64_cmpxchg_acquire atomic64_cmpxchg_acquire
@@ -1494,7 +1481,7 @@ atomic64_cmpxchg_acquire(atomic64_t *v, s64 old, s64 new) · 3 unmodified lines
14941481 static __always_inline s64
14951482 atomic64_cmpxchg_release(atomic64_t *v, s64 old, s64 new)
14961483 {
1497− __atomic_check_write(v, sizeof(*v));
1484+ instrument_atomic_write(v, sizeof(*v));
14981485 return arch_atomic64_cmpxchg_release(v, old, new);
14991486 }
15001487 #define atomic64_cmpxchg_release atomic64_cmpxchg_release
@@ -1504,7 +1491,7 @@ atomic64_cmpxchg_release(atomic64_t *v, s64 old, s64 new) · 3 unmodified lines
15041491 static __always_inline s64
15051492 atomic64_cmpxchg_relaxed(atomic64_t *v, s64 old, s64 new)
15061493 {
1507− __atomic_check_write(v, sizeof(*v));
1494+ instrument_atomic_write(v, sizeof(*v));
15081495 return arch_atomic64_cmpxchg_relaxed(v, old, new);
15091496 }
15101497 #define atomic64_cmpxchg_relaxed atomic64_cmpxchg_relaxed
@@ -1514,8 +1501,8 @@ atomic64_cmpxchg_relaxed(atomic64_t *v, s64 old, s64 new) · 3 unmodified lines
15141501 static __always_inline bool
15151502 atomic64_try_cmpxchg(atomic64_t *v, s64 *old, s64 new)
15161503 {
1517− __atomic_check_write(v, sizeof(*v));
1518− __atomic_check_write(old, sizeof(*old));
1504+ instrument_atomic_write(v, sizeof(*v));
1505+ instrument_atomic_write(old, sizeof(*old));
15191506 return arch_atomic64_try_cmpxchg(v, old, new);
15201507 }
15211508 #define atomic64_try_cmpxchg atomic64_try_cmpxchg
@@ -1525,8 +1512,8 @@ atomic64_try_cmpxchg(atomic64_t *v, s64 *old, s64 new) · 3 unmodified lines
15251512 static __always_inline bool
15261513 atomic64_try_cmpxchg_acquire(atomic64_t *v, s64 *old, s64 new)
15271514 {
1528− __atomic_check_write(v, sizeof(*v));
1529− __atomic_check_write(old, sizeof(*old));
1515+ instrument_atomic_write(v, sizeof(*v));
1516+ instrument_atomic_write(old, sizeof(*old));
15301517 return arch_atomic64_try_cmpxchg_acquire(v, old, new);
15311518 }
15321519 #define atomic64_try_cmpxchg_acquire atomic64_try_cmpxchg_acquire
@@ -1536,8 +1523,8 @@ atomic64_try_cmpxchg_acquire(atomic64_t *v, s64 *old, s64 new) · 3 unmodified lines
15361523 static __always_inline bool
15371524 atomic64_try_cmpxchg_release(atomic64_t *v, s64 *old, s64 new)
15381525 {
1539− __atomic_check_write(v, sizeof(*v));
1540− __atomic_check_write(old, sizeof(*old));
1526+ instrument_atomic_write(v, sizeof(*v));
1527+ instrument_atomic_write(old, sizeof(*old));
15411528 return arch_atomic64_try_cmpxchg_release(v, old, new);
15421529 }
15431530 #define atomic64_try_cmpxchg_release atomic64_try_cmpxchg_release
@@ -1547,8 +1534,8 @@ atomic64_try_cmpxchg_release(atomic64_t *v, s64 *old, s64 new) · 3 unmodified lines
15471534 static __always_inline bool
15481535 atomic64_try_cmpxchg_relaxed(atomic64_t *v, s64 *old, s64 new)
15491536 {
1550− __atomic_check_write(v, sizeof(*v));
1551− __atomic_check_write(old, sizeof(*old));
1537+ instrument_atomic_write(v, sizeof(*v));
1538+ instrument_atomic_write(old, sizeof(*old));
15521539 return arch_atomic64_try_cmpxchg_relaxed(v, old, new);
15531540 }
15541541 #define atomic64_try_cmpxchg_relaxed atomic64_try_cmpxchg_relaxed
@@ -1558,7 +1545,7 @@ atomic64_try_cmpxchg_relaxed(atomic64_t *v, s64 *old, s64 new) · 3 unmodified lines
15581545 static __always_inline bool
15591546 atomic64_sub_and_test(s64 i, atomic64_t *v)
15601547 {
1561− __atomic_check_write(v, sizeof(*v));
1548+ instrument_atomic_write(v, sizeof(*v));
15621549 return arch_atomic64_sub_and_test(i, v);
15631550 }
15641551 #define atomic64_sub_and_test atomic64_sub_and_test
@@ -1568,7 +1555,7 @@ atomic64_sub_and_test(s64 i, atomic64_t *v) · 3 unmodified lines
15681555 static __always_inline bool
15691556 atomic64_dec_and_test(atomic64_t *v)
15701557 {
1571− __atomic_check_write(v, sizeof(*v));
1558+ instrument_atomic_write(v, sizeof(*v));
15721559 return arch_atomic64_dec_and_test(v);
15731560 }
15741561 #define atomic64_dec_and_test atomic64_dec_and_test
@@ -1578,7 +1565,7 @@ atomic64_dec_and_test(atomic64_t *v) · 3 unmodified lines
15781565 static __always_inline bool
15791566 atomic64_inc_and_test(atomic64_t *v)
15801567 {
1581− __atomic_check_write(v, sizeof(*v));
1568+ instrument_atomic_write(v, sizeof(*v));
15821569 return arch_atomic64_inc_and_test(v);
15831570 }
15841571 #define atomic64_inc_and_test atomic64_inc_and_test
@@ -1588,7 +1575,7 @@ atomic64_inc_and_test(atomic64_t *v) · 3 unmodified lines
15881575 static __always_inline bool
15891576 atomic64_add_negative(s64 i, atomic64_t *v)
15901577 {
1591− __atomic_check_write(v, sizeof(*v));
1578+ instrument_atomic_write(v, sizeof(*v));
15921579 return arch_atomic64_add_negative(i, v);
15931580 }
15941581 #define atomic64_add_negative atomic64_add_negative
@@ -1598,7 +1585,7 @@ atomic64_add_negative(s64 i, atomic64_t *v) · 3 unmodified lines
15981585 static __always_inline s64
15991586 atomic64_fetch_add_unless(atomic64_t *v, s64 a, s64 u)
16001587 {
1601− __atomic_check_write(v, sizeof(*v));
1588+ instrument_atomic_write(v, sizeof(*v));
16021589 return arch_atomic64_fetch_add_unless(v, a, u);
16031590 }
16041591 #define atomic64_fetch_add_unless atomic64_fetch_add_unless
@@ -1608,7 +1595,7 @@ atomic64_fetch_add_unless(atomic64_t *v, s64 a, s64 u) · 3 unmodified lines
16081595 static __always_inline bool
16091596 atomic64_add_unless(atomic64_t *v, s64 a, s64 u)
16101597 {
1611− __atomic_check_write(v, sizeof(*v));
1598+ instrument_atomic_write(v, sizeof(*v));
16121599 return arch_atomic64_add_unless(v, a, u);
16131600 }
16141601 #define atomic64_add_unless atomic64_add_unless
@@ -1618,7 +1605,7 @@ atomic64_add_unless(atomic64_t *v, s64 a, s64 u) · 3 unmodified lines
16181605 static __always_inline bool
16191606 atomic64_inc_not_zero(atomic64_t *v)
16201607 {
1621− __atomic_check_write(v, sizeof(*v));
1608+ instrument_atomic_write(v, sizeof(*v));
16221609 return arch_atomic64_inc_not_zero(v);
16231610 }
16241611 #define atomic64_inc_not_zero atomic64_inc_not_zero
@@ -1628,7 +1615,7 @@ atomic64_inc_not_zero(atomic64_t *v) · 3 unmodified lines
16281615 static __always_inline bool
16291616 atomic64_inc_unless_negative(atomic64_t *v)
16301617 {
1631− __atomic_check_write(v, sizeof(*v));
1618+ instrument_atomic_write(v, sizeof(*v));
16321619 return arch_atomic64_inc_unless_negative(v);
16331620 }
16341621 #define atomic64_inc_unless_negative atomic64_inc_unless_negative
@@ -1638,7 +1625,7 @@ atomic64_inc_unless_negative(atomic64_t *v) · 3 unmodified lines
16381625 static __always_inline bool
16391626 atomic64_dec_unless_positive(atomic64_t *v)
16401627 {
1641− __atomic_check_write(v, sizeof(*v));
1628+ instrument_atomic_write(v, sizeof(*v));
16421629 return arch_atomic64_dec_unless_positive(v);
16431630 }
16441631 #define atomic64_dec_unless_positive atomic64_dec_unless_positive
@@ -1648,7 +1635,7 @@ atomic64_dec_unless_positive(atomic64_t *v) · 3 unmodified lines
16481635 static __always_inline s64
16491636 atomic64_dec_if_positive(atomic64_t *v)
16501637 {
1651− __atomic_check_write(v, sizeof(*v));
1638+ instrument_atomic_write(v, sizeof(*v));
16521639 return arch_atomic64_dec_if_positive(v);
16531640 }
16541641 #define atomic64_dec_if_positive atomic64_dec_if_positive
@@ -1658,7 +1645,7 @@ atomic64_dec_if_positive(atomic64_t *v) · 3 unmodified lines
16581645 #define xchg(ptr, ...) \
16591646 ({ \
16601647 typeof(ptr) __ai_ptr = (ptr); \
1661− __atomic_check_write(__ai_ptr, sizeof(*__ai_ptr)); \
1648+ instrument_atomic_write(__ai_ptr, sizeof(*__ai_ptr)); \
16621649 arch_xchg(__ai_ptr, __VA_ARGS__); \
16631650 })
16641651 #endif
@@ -1667,7 +1654,7 @@ atomic64_dec_if_positive(atomic64_t *v) · 2 unmodified lines
16671654 #define xchg_acquire(ptr, ...) \
16681655 ({ \
16691656 typeof(ptr) __ai_ptr = (ptr); \
1670− __atomic_check_write(__ai_ptr, sizeof(*__ai_ptr)); \
1657+ instrument_atomic_write(__ai_ptr, sizeof(*__ai_ptr)); \
16711658 arch_xchg_acquire(__ai_ptr, __VA_ARGS__); \
16721659 })
16731660 #endif
@@ -1676,7 +1663,7 @@ atomic64_dec_if_positive(atomic64_t *v) · 2 unmodified lines
16761663 #define xchg_release(ptr, ...) \
16771664 ({ \
16781665 typeof(ptr) __ai_ptr = (ptr); \
1679− __atomic_check_write(__ai_ptr, sizeof(*__ai_ptr)); \
1666+ instrument_atomic_write(__ai_ptr, sizeof(*__ai_ptr)); \
16801667 arch_xchg_release(__ai_ptr, __VA_ARGS__); \
16811668 })
16821669 #endif
@@ -1685,7 +1672,7 @@ atomic64_dec_if_positive(atomic64_t *v) · 2 unmodified lines
16851672 #define xchg_relaxed(ptr, ...) \
16861673 ({ \
16871674 typeof(ptr) __ai_ptr = (ptr); \
1688− __atomic_check_write(__ai_ptr, sizeof(*__ai_ptr)); \
1675+ instrument_atomic_write(__ai_ptr, sizeof(*__ai_ptr)); \
16891676 arch_xchg_relaxed(__ai_ptr, __VA_ARGS__); \
16901677 })
16911678 #endif
@@ -1694,7 +1681,7 @@ atomic64_dec_if_positive(atomic64_t *v) · 2 unmodified lines
16941681 #define cmpxchg(ptr, ...) \
16951682 ({ \
16961683 typeof(ptr) __ai_ptr = (ptr); \
1697− __atomic_check_write(__ai_ptr, sizeof(*__ai_ptr)); \
1684+ instrument_atomic_write(__ai_ptr, sizeof(*__ai_ptr)); \
16981685 arch_cmpxchg(__ai_ptr, __VA_ARGS__); \
16991686 })
17001687 #endif
@@ -1703,7 +1690,7 @@ atomic64_dec_if_positive(atomic64_t *v) · 2 unmodified lines
17031690 #define cmpxchg_acquire(ptr, ...) \
17041691 ({ \
17051692 typeof(ptr) __ai_ptr = (ptr); \
1706− __atomic_check_write(__ai_ptr, sizeof(*__ai_ptr)); \
1693+ instrument_atomic_write(__ai_ptr, sizeof(*__ai_ptr)); \
17071694 arch_cmpxchg_acquire(__ai_ptr, __VA_ARGS__); \
17081695 })
17091696 #endif
@@ -1712,7 +1699,7 @@ atomic64_dec_if_positive(atomic64_t *v) · 2 unmodified lines
17121699 #define cmpxchg_release(ptr, ...) \
17131700 ({ \
17141701 typeof(ptr) __ai_ptr = (ptr); \
1715− __atomic_check_write(__ai_ptr, sizeof(*__ai_ptr)); \
1702+ instrument_atomic_write(__ai_ptr, sizeof(*__ai_ptr)); \
17161703 arch_cmpxchg_release(__ai_ptr, __VA_ARGS__); \
17171704 })
17181705 #endif
@@ -1721,7 +1708,7 @@ atomic64_dec_if_positive(atomic64_t *v) · 2 unmodified lines
17211708 #define cmpxchg_relaxed(ptr, ...) \
17221709 ({ \
17231710 typeof(ptr) __ai_ptr = (ptr); \
1724− __atomic_check_write(__ai_ptr, sizeof(*__ai_ptr)); \
1711+ instrument_atomic_write(__ai_ptr, sizeof(*__ai_ptr)); \
17251712 arch_cmpxchg_relaxed(__ai_ptr, __VA_ARGS__); \
17261713 })
17271714 #endif
@@ -1730,7 +1717,7 @@ atomic64_dec_if_positive(atomic64_t *v) · 2 unmodified lines
17301717 #define cmpxchg64(ptr, ...) \
17311718 ({ \
17321719 typeof(ptr) __ai_ptr = (ptr); \
1733− __atomic_check_write(__ai_ptr, sizeof(*__ai_ptr)); \
1720+ instrument_atomic_write(__ai_ptr, sizeof(*__ai_ptr)); \
17341721 arch_cmpxchg64(__ai_ptr, __VA_ARGS__); \
17351722 })
17361723 #endif
@@ -1739,7 +1726,7 @@ atomic64_dec_if_positive(atomic64_t *v) · 2 unmodified lines
17391726 #define cmpxchg64_acquire(ptr, ...) \
17401727 ({ \
17411728 typeof(ptr) __ai_ptr = (ptr); \
1742− __atomic_check_write(__ai_ptr, sizeof(*__ai_ptr)); \
1729+ instrument_atomic_write(__ai_ptr, sizeof(*__ai_ptr)); \
17431730 arch_cmpxchg64_acquire(__ai_ptr, __VA_ARGS__); \
17441731 })
17451732 #endif
@@ -1748,7 +1735,7 @@ atomic64_dec_if_positive(atomic64_t *v) · 2 unmodified lines
17481735 #define cmpxchg64_release(ptr, ...) \
17491736 ({ \
17501737 typeof(ptr) __ai_ptr = (ptr); \
1751− __atomic_check_write(__ai_ptr, sizeof(*__ai_ptr)); \
1738+ instrument_atomic_write(__ai_ptr, sizeof(*__ai_ptr)); \
17521739 arch_cmpxchg64_release(__ai_ptr, __VA_ARGS__); \
17531740 })
17541741 #endif
@@ -1757,7 +1744,7 @@ atomic64_dec_if_positive(atomic64_t *v) · 2 unmodified lines
17571744 #define cmpxchg64_relaxed(ptr, ...) \
17581745 ({ \
17591746 typeof(ptr) __ai_ptr = (ptr); \
1760− __atomic_check_write(__ai_ptr, sizeof(*__ai_ptr)); \
1747+ instrument_atomic_write(__ai_ptr, sizeof(*__ai_ptr)); \
17611748 arch_cmpxchg64_relaxed(__ai_ptr, __VA_ARGS__); \
17621749 })
17631750 #endif
@@ -1765,28 +1752,28 @@ atomic64_dec_if_positive(atomic64_t *v) · 1 unmodified line
17651752 #define cmpxchg_local(ptr, ...) \
17661753 ({ \
17671754 typeof(ptr) __ai_ptr = (ptr); \
1768− __atomic_check_write(__ai_ptr, sizeof(*__ai_ptr)); \
1755+ instrument_atomic_write(__ai_ptr, sizeof(*__ai_ptr)); \
17691756 arch_cmpxchg_local(__ai_ptr, __VA_ARGS__); \
17701757 })
17711758
17721759 #define cmpxchg64_local(ptr, ...) \
17731760 ({ \
17741761 typeof(ptr) __ai_ptr = (ptr); \
1775− __atomic_check_write(__ai_ptr, sizeof(*__ai_ptr)); \
1762+ instrument_atomic_write(__ai_ptr, sizeof(*__ai_ptr)); \
17761763 arch_cmpxchg64_local(__ai_ptr, __VA_ARGS__); \
17771764 })
17781765
17791766 #define sync_cmpxchg(ptr, ...) \
17801767 ({ \
17811768 typeof(ptr) __ai_ptr = (ptr); \
1782− __atomic_check_write(__ai_ptr, sizeof(*__ai_ptr)); \
1769+ instrument_atomic_write(__ai_ptr, sizeof(*__ai_ptr)); \
17831770 arch_sync_cmpxchg(__ai_ptr, __VA_ARGS__); \
17841771 })
17851772
17861773 #define cmpxchg_double(ptr, ...) \
17871774 ({ \
17881775 typeof(ptr) __ai_ptr = (ptr); \
1789− __atomic_check_write(__ai_ptr, 2 * sizeof(*__ai_ptr)); \
1776+ instrument_atomic_write(__ai_ptr, 2 * sizeof(*__ai_ptr)); \
17901777 arch_cmpxchg_double(__ai_ptr, __VA_ARGS__); \
17911778 })
17921779
@@ -1794,9 +1781,9 @@ atomic64_dec_if_positive(atomic64_t *v) · 1 unmodified line
17941781 #define cmpxchg_double_local(ptr, ...) \
17951782 ({ \
17961783 typeof(ptr) __ai_ptr = (ptr); \
1797− __atomic_check_write(__ai_ptr, 2 * sizeof(*__ai_ptr)); \
1784+ instrument_atomic_write(__ai_ptr, 2 * sizeof(*__ai_ptr)); \
17981785 arch_cmpxchg_double_local(__ai_ptr, __VA_ARGS__); \
17991786 })
18001787
18011788 #endif /* _ASM_GENERIC_ATOMIC_INSTRUMENTED_H */
1802−// 7b7e2af0e75c8ecb6f02298a7075f503f30d244c
1789+// 89bf97f3a7509b740845e51ddf31055b48a81f40
scripts/atomic/gen-atomic-instrumented.sh+3−16
@@ -20,7 +20,7 @@ gen_param_check() · 19 unmodified lines
2020 # We don't write to constant parameters
2121 [ ${type#c} != ${type} ] && rw="read"
2222
23− printf "\t__atomic_check_${rw}(${name}, sizeof(*${name}));\n"
23+ printf "\tinstrument_atomic_${rw}(${name}, sizeof(*${name}));\n"
2424 }
2525
2626 #gen_param_check(arg...)
@@ -107,7 +107,7 @@ cat <<EOF · 80 unmodified lines
107107 #define ${xchg}(ptr, ...) \\
108108 ({ \\
109109 typeof(ptr) __ai_ptr = (ptr); \\
110− __atomic_check_write(__ai_ptr, ${mult}sizeof(*__ai_ptr)); \\
110+ instrument_atomic_write(__ai_ptr, ${mult}sizeof(*__ai_ptr)); \\
111111 arch_${xchg}(__ai_ptr, __VA_ARGS__); \\
112112 })
113113 EOF
@@ -148,20 +148,7 @@ cat << EOF · 34 unmodified lines
148148
149149 #include <linux/build_bug.h>
150150 #include <linux/compiler.h>
151−#include <linux/kasan-checks.h>
152−#include <linux/kcsan-checks.h>
153−
154−static __always_inline void __atomic_check_read(const volatile void *v, size_t size)
155−{
156− kasan_check_read(v, size);
157− kcsan_check_atomic_read(v, size);
158−}
159−
160−static __always_inline void __atomic_check_write(const volatile void *v, size_t size)
161−{
162− kasan_check_write(v, size);
163− kcsan_check_atomic_write(v, size);
164−}
151+#include <linux/instrumented.h>
165152
166153 EOF
167154