From 0e70982b4da62e18d961a85c10d93e8ecf06a0d6 Mon Sep 17 00:00:00 2001
From: Avi Kivity <avi@cloudius-systems.com>
Date: Wed, 22 May 2013 19:31:27 +0300
Subject: [PATCH] sched: tighten up cpu_set memory barriers

---
 include/sched.hh | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/include/sched.hh b/include/sched.hh
index 041116717..cd5e99588 100644
--- a/include/sched.hh
+++ b/include/sched.hh
@@ -40,12 +40,12 @@ const unsigned max_cpus = sizeof(unsigned long) * 8;
 class cpu_set {
 public:
     explicit cpu_set() : _mask() {}
-    cpu_set(const cpu_set& other) : _mask(other._mask.load()) {}
+    cpu_set(const cpu_set& other) : _mask(other._mask.load(std::memory_order_relaxed)) {}
     void set(unsigned c) {
-        _mask.fetch_or(1UL << c);
+        _mask.fetch_or(1UL << c, std::memory_order_release);
     }
     void clear(unsigned c) {
-        _mask.fetch_and(~(1UL << c));
+        _mask.fetch_and(~(1UL << c), std::memory_order_release);
     }
     class iterator;
     iterator begin() {
@@ -57,7 +57,7 @@ public:
     cpu_set fetch_clear() {
         cpu_set ret;
         if (_mask.load(std::memory_order_relaxed)) {
-            ret._mask = _mask.exchange(0);
+            ret._mask = _mask.exchange(0, std::memory_order_acquire);
         }
         return ret;
     }
-- 
GitLab