From 2ea5bf4f55ca313ae81fc39329157c360b9438fa Mon Sep 17 00:00:00 2001 From: John Sully Date: Sun, 24 May 2020 01:57:18 -0400 Subject: [PATCH] Incorrect memory order on weak ordered architectures Former-commit-id: 90162da1a6c025d148a0d1761ae4d5fbc9bfc0ef --- src/server.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/server.h b/src/server.h index 753c641c0..9274538c5 100644 --- a/src/server.h +++ b/src/server.h @@ -801,7 +801,7 @@ public: void setrefcount(unsigned ref); unsigned getrefcount(std::memory_order order = std::memory_order_relaxed) const { return (refcount.load(order) & ~(1U << 31)); } void addref() const { refcount.fetch_add(1, std::memory_order_relaxed); } - unsigned release() const { return refcount.fetch_sub(1, std::memory_order_relaxed) & ~(1U << 31); } + unsigned release() const { return refcount.fetch_sub(1, std::memory_order_seq_cst) & ~(1U << 31); } } robj; static_assert(sizeof(redisObject) == 24, "object size is critical, don't increase"); @@ -1682,7 +1682,7 @@ struct redisServer { std::atomic next_client_id; /* Next client unique ID. Incremental. */ int protected_mode; /* Don't accept external connections. */ long long events_processed_while_blocked; /* processEventsWhileBlocked() */ - + /* RDB / AOF loading information */ std::atomic loading; /* We are loading data from disk if true */ off_t loading_total_bytes;