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;
*/
rcu_read_unlock();
- data = node->data;
- call_rcu(free, node);
+ data = del_node->data;
+ call_rcu(free, del_node);
return data;
error: