Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 31 Jan 2020 20:30:50 +0000 (UTC)
From:      Konstantin Belousov <kib@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r357352 - head/tools/uma/smrstress
Message-ID:  <202001312030.00VKUoeK088320@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
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);
 	}



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202001312030.00VKUoeK088320>