[ltt-dev] [PATCH] wfqueue: fix type-incorrect assignment

Paolo Bonzini pbonzini at redhat.com
Tue Aug 9 07:56: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>
---
 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