aboutsummaryrefslogtreecommitdiffstats
path: root/src/vppinfra/lock.h
diff options
context:
space:
mode:
authorDave Barach <dave@barachs.net>2017-10-15 17:20:40 -0400
committerFlorin Coras <florin.coras@gmail.com>2017-10-15 22:14:15 +0000
commitfa77e8fb1cc8a87a4a31792698e7200c4195583e (patch)
tree6dfa3d416173dbd3dde063f5d7db9c5b10d18086 /src/vppinfra/lock.h
parentd172a62365523427aebd34444736632c9a68a463 (diff)
Fix minor issues in clib_spinlock_unlock()
Change-Id: I20ce799c9dd57332c06003b466ee7c36169bce98 Signed-off-by: Dave Barach <dave@barachs.net>
Diffstat (limited to 'src/vppinfra/lock.h')
-rw-r--r--src/vppinfra/lock.h4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/vppinfra/lock.h b/src/vppinfra/lock.h
index 0cd2b4fea53..7d241675b12 100644
--- a/src/vppinfra/lock.h
+++ b/src/vppinfra/lock.h
@@ -71,12 +71,14 @@ clib_spinlock_lock_if_init (clib_spinlock_t * p)
static_always_inline void
clib_spinlock_unlock (clib_spinlock_t * p)
{
- (*p)->lock = 0;
#if CLIB_DEBUG > 0
(*p)->frame_address = 0;
(*p)->pid = 0;
(*p)->thread_index = 0;
#endif
+ /* Make sure all writes are complete before releasing the lock */
+ CLIB_MEMORY_BARRIER ();
+ (*p)->lock = 0;
}
static_always_inline void