rculfhash: Ensure future-proof memory barrier semantic consistency
authorMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Tue, 8 May 2012 21:09:46 +0000 (17:09 -0400)
committerMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Tue, 8 May 2012 21:09:46 +0000 (17:09 -0400)
Use cmm_smp_mb__before_uatomic_or() prior to the uatomic_or() in
_rcu_lfht_del() to ensure correct memory barrier semantic when we relax
(in the future) the barrier implementation of some architectures.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
rculfhash.c

index e9cf0622f53576ef8ad8c08eda082c37f1151b86..3ad3618aa7297ee5403d176d5c7f0e02be504def 100644 (file)
@@ -1073,6 +1073,11 @@ int _cds_lfht_del(struct cds_lfht *ht, unsigned long size,
        if (caa_unlikely(is_removed(next)))
                return -ENOENT;
        assert(!is_bucket(next));
+       /*
+        * The del operation semantic guarantees a full memory barrier
+        * before the uatomic_or atomic commit of the deletion flag.
+        */
+       cmm_smp_mb__before_uatomic_or();
        /*
         * We set the REMOVED_FLAG unconditionally. Note that there may
         * be more than one concurrent thread setting this flag.
This page took 0.026727 seconds and 4 git commands to generate.