[ltt-dev] [PATCH resent 1/7] wfqueue: fix type-incorrect assignment

Paolo Bonzini pbonzini at redhat.com
Wed Aug 17 04:31:28 EDT 2011


The "old_tail = q->tail, q->tail = node" assignment in wfqueue
is not type safe; q->tail is a pointer to pointer to node and the
correct value to assign is &node->next.  While the arithmetic is
the same, it is better to be tidy.

Signed-off-by: Paolo Bonzini <pbonzini at redhat.com>
Reviewed-by: Mathieu Desnoyers <mathieu.desnoyers at efficios.com>
---
 urcu/static/wfqueue.h |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/urcu/static/wfqueue.h b/urcu/static/wfqueue.h
index 77828ca..19314f5 100644
--- a/urcu/static/wfqueue.h
+++ b/urcu/static/wfqueue.h
@@ -75,7 +75,7 @@ static inline void _cds_wfq_enqueue(struct cds_wfq_queue *q,
 	 * structure containing node and setting node->next to NULL before
 	 * publication.
 	 */
-	old_tail = uatomic_xchg(&q->tail, node);
+	old_tail = uatomic_xchg(&q->tail, &node->next);
 	/*
 	 * At this point, dequeuers see a NULL old_tail->next, which indicates
 	 * that the queue is being appended to. The following store will append
-- 
1.7.6






More information about the lttng-dev mailing list