svn commit: r357352 - head/tools/uma/smrstress
Konstantin Belousov
kib at FreeBSD.org
Fri Jan 31 20:30:50 UTC 2020
Author: kib
Date: Fri Jan 31 20:30:50 2020
New Revision: 357352
URL: https://svnweb.freebsd.org/changeset/base/357352
Log:
smrstress: Add 'publishing' fences to operations on smrs_current.
Reported and tested by: andrew
Reviewed by: jeff
Sponsored by: The FreeBSD Foundation
Differential revision: https://reviews.freebsd.org/D23440
Modified:
head/tools/uma/smrstress/smrstress.c
Modified: head/tools/uma/smrstress/smrstress.c
==============================================================================
--- head/tools/uma/smrstress/smrstress.c Fri Jan 31 20:04:32 2020 (r357351)
+++ head/tools/uma/smrstress/smrstress.c Fri Jan 31 20:30:50 2020 (r357352)
@@ -84,7 +84,7 @@ smrs_read(void)
/* Wait for the writer to exit. */
while (smrs_completed == 0) {
smr_enter(smrs_smr);
- cur = (void *)atomic_load_ptr(&smrs_current);
+ cur = (void *)atomic_load_acq_ptr(&smrs_current);
if (cur->generation == -1)
smrs_error(cur, "read early: Use after free!\n");
atomic_add_int(&cur->count, 1);
@@ -107,6 +107,7 @@ smrs_write(void)
for (i = 0; i < smrs_iterations; i++) {
cur = uma_zalloc_smr(smrs_zone, M_WAITOK);
+ atomic_thread_fence_rel();
cur = (void *)atomic_swap_ptr(&smrs_current, (uintptr_t)cur);
uma_zfree_smr(smrs_zone, cur);
}
More information about the svn-src-head
mailing list