locking/atomic: Correct (cmp)xchg() instrumentation
[linux-block.git] / scripts / atomic / gen-atomic-instrumented.sh
index 77c06526a574495f30e970c96a73e8d5d07d4c62..d9ffd74f73ca290af07f98b798087094a1c16e39 100755 (executable)
@@ -104,8 +104,8 @@ cat <<EOF
 EOF
 [ -n "$kcsan_barrier" ] && printf "\t${kcsan_barrier}; \\\\\n"
 cat <<EOF
-       instrument_atomic_write(__ai_ptr, ${mult}sizeof(*__ai_ptr)); \\
-       instrument_atomic_write(__ai_oldp, ${mult}sizeof(*__ai_oldp)); \\
+       instrument_atomic_read_write(__ai_ptr, ${mult}sizeof(*__ai_ptr)); \\
+       instrument_read_write(__ai_oldp, ${mult}sizeof(*__ai_oldp)); \\
        arch_${xchg}${order}(__ai_ptr, __ai_oldp, __VA_ARGS__); \\
 })
 EOF
@@ -119,7 +119,7 @@ cat <<EOF
 EOF
 [ -n "$kcsan_barrier" ] && printf "\t${kcsan_barrier}; \\\\\n"
 cat <<EOF
-       instrument_atomic_write(__ai_ptr, ${mult}sizeof(*__ai_ptr)); \\
+       instrument_atomic_read_write(__ai_ptr, ${mult}sizeof(*__ai_ptr)); \\
        arch_${xchg}${order}(__ai_ptr, __VA_ARGS__); \\
 })
 EOF
@@ -173,7 +173,7 @@ for xchg in "xchg" "cmpxchg" "cmpxchg64" "try_cmpxchg" "try_cmpxchg64"; do
        done
 done
 
-for xchg in "cmpxchg_local" "cmpxchg64_local" "sync_cmpxchg"; do
+for xchg in "cmpxchg_local" "cmpxchg64_local" "sync_cmpxchg" "try_cmpxchg_local" "try_cmpxchg64_local" ; do
        gen_xchg "${xchg}" "" ""
        printf "\n"
 done