Skip to content

Commit

Permalink
Use correct release semantic in list update.
Browse files Browse the repository at this point in the history
nscd uses lockfree lists and we need to ensure the correct release
semantics is used when adding to the list.
  • Loading branch information
Andreas Schwab authored and Ulrich Drepper committed Jul 16, 2009
1 parent bec466d commit 50158f9
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 1 deletion.
6 changes: 6 additions & 0 deletions ChangeLog
Original file line number Diff line number Diff line change
@@ -1,4 +1,10 @@
2009-07-16 Ulrich Drepper <drepper@redhat.com>

* nscd/cache.c (cache_add): Use atomic_compare_and_exchange_bool_rel
instead of atomic_compare_and_exchange_bool_acq to ensure pointer
is written before the list head update.
Patch by Andreas Schwab <aschwab@redhat.com>.

Jakub Jelinek <jakub@redhat.com>

* malloc/malloc.c [ATOMIC_FASTBINS] (_int_free): Make check for
Expand Down
2 changes: 1 addition & 1 deletion nscd/cache.c
Original file line number Diff line number Diff line change
Expand Up @@ -179,7 +179,7 @@ cache_add (int type, const void *key, size_t len, struct datahead *packet,
/* 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],
while (atomic_compare_and_exchange_bool_rel (&table->head->array[hash],
(ref_t) ((char *) newp
- table->data),
(ref_t) newp->next));
Expand Down

0 comments on commit 50158f9

Please sign in to comment.