This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Another possible acq vs. rel mixup
- From: Andreas Schwab <schwab at redhat dot com>
- To: libc-alpha at sourceware dot org
- Date: Thu, 16 Jul 2009 18:29:39 +0200
- Subject: Another possible acq vs. rel mixup
While looking at nscd/cache.c:cache_add I noticed this:
/* Put the new entry in the first position. */
do
newp->next = table->head->array[hash];
while (atomic_compare_and_exchange_bool_acq (&table->head->array[hash],
(ref_t) ((char *) newp
- table->data),
(ref_t) newp->next));
This looks very similar to the recent _int_free issue with acq/rel
mixup. I think we need to use the _rel variant since newp->next needs
to be written before newp is put on the list.
Andreas.
--
Andreas Schwab, schwab@redhat.com
GPG Key fingerprint = D4E8 DBE3 3813 BB5D FA84 5EC7 45C6 250E 6F00 984E
"And now for something completely different."