urcu-ht: fix incorrect condition in steal
[urcu.git] / urcu-ht.c
index a26878fd347ccf22294509960fcf95a6cc67f1d3..e3fd3137a9273795bb6842b110a47774120ae5ae 100644 (file)
--- a/urcu-ht.c
+++ b/urcu-ht.c
@@ -166,7 +166,7 @@ retry:
                node = rcu_dereference(*prev);
        }
        /* Found it ! pointer to object is in "prev" */
-       if (rcu_cmpxchg_pointer(prev, node, node->next) != node)
+       if (rcu_cmpxchg_pointer(prev, node, node->next) == node)
                del_node = node;
        goto restart;
 
@@ -177,8 +177,8 @@ end:
         */
        rcu_read_unlock();
 
-       data = node->data;
-       call_rcu(free, node);
+       data = del_node->data;
+       call_rcu(free, del_node);
        return data;
 
 error:
This page took 0.022229 seconds and 4 git commands to generate.