Skip to content

Instantly share code, notes, and snippets.

@nickdesaulniers
Created May 23, 2024 19:15
Show Gist options
  • Save nickdesaulniers/a178d58ad473ca1bb962d35172381c93 to your computer and use it in GitHub Desktop.
Save nickdesaulniers/a178d58ad473ca1bb962d35172381c93 to your computer and use it in GitHub Desktop.
diff --git a/tools/testing/selftests/kselftest_harness.h b/tools/testing/selftests/kselftest_harness.h
index b634969cbb6f..da4c91793cdc 100644
--- a/tools/testing/selftests/kselftest_harness.h
+++ b/tools/testing/selftests/kselftest_harness.h
@@ -450,14 +450,18 @@ static inline pid_t clone3_vfork(void)
_metadata->exit_code = KSFT_FAIL; \
} \
} \
+ _Bool expected = false; \
+ _Bool desired = true; \
+ _Bool weak = false; \
+ int memorder = __ATOMIC_SEQ_CST; \
if (child == 0) { \
if (_metadata->setup_completed && !fixture_name##_teardown_parent && \
- __sync_bool_compare_and_swap(teardown, false, true)) \
+ __atomic_compare_exchange(teardown, &expected, &desired, weak, memorder, memorder)) \
fixture_name##_teardown(_metadata, self, variant->data); \
_exit(0); \
} \
if (_metadata->setup_completed && fixture_name##_teardown_parent && \
- __sync_bool_compare_and_swap(teardown, false, true)) \
+ __atomic_compare_exchange(teardown, &expected, &desired, weak, memorder, memorder)) \
fixture_name##_teardown(_metadata, self, variant->data); \
munmap(teardown, sizeof(*teardown)); \
if (self && fixture_name##_teardown_parent) \
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment