diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | nptl/allocatestack.c | 37 |
2 files changed, 22 insertions, 20 deletions
@@ -1,3 +1,8 @@ +2014-06-05 Siddhesh Poyarekar <siddhesh@redhat.com> + + * nptl/allocatestack.c (check_list): Inlined function... + (__reclaim_stacks): ... here. + 2014-06-05 Ondřej Bílka <neleai@seznam.cz> [BZ #15698] diff --git a/nptl/allocatestack.c b/nptl/allocatestack.c index 1e22f7da90..d0d155c056 100644 --- a/nptl/allocatestack.c +++ b/nptl/allocatestack.c @@ -830,26 +830,23 @@ __reclaim_stacks (void) if (add_p) { - /* We always add at the beginning of the list. So in this - case we only need to check the beginning of these lists. */ - int check_list (list_t *l) - { - if (l->next->prev != l) - { - assert (l->next->prev == elem); - - elem->next = l->next; - elem->prev = l; - l->next = elem; - - return 1; - } - - return 0; - } - - if (check_list (&stack_used) == 0) - (void) check_list (&stack_cache); + /* We always add at the beginning of the list. So in this case we + only need to check the beginning of these lists to see if the + pointers at the head of the list are inconsistent. */ + list_t *l = NULL; + + if (stack_used.next->prev != &stack_used) + l = &stack_used; + else if (stack_cache.next->prev != &stack_cache) + l = &stack_cache; + + if (l != NULL) + { + assert (l->next->prev == elem); + elem->next = l->next; + elem->prev = l; + l->next = elem; + } } else { |