diff options
author | Florian Weimer <fweimer@redhat.com> | 2015-12-21 16:42:46 +0100 |
---|---|---|
committer | Florian Weimer <fweimer@redhat.com> | 2015-12-21 16:42:46 +0100 |
commit | 90c400bd4904b0240a148f0b357a5cbc36179239 (patch) | |
tree | c13c4282ac662fa9a7944a41e88ee8e13163cfab /ChangeLog | |
parent | b300455644e2945da05eb49d12d3a037f1408be1 (diff) | |
download | glibc-90c400bd4904b0240a148f0b357a5cbc36179239.tar.gz glibc-90c400bd4904b0240a148f0b357a5cbc36179239.tar.xz glibc-90c400bd4904b0240a148f0b357a5cbc36179239.zip |
malloc: Fix list_lock/arena lock deadlock [BZ #19182]
* malloc/arena.c (list_lock): Document lock ordering requirements. (free_list_lock): New lock. (ptmalloc_lock_all): Comment on free_list_lock. (ptmalloc_unlock_all2): Reinitialize free_list_lock. (detach_arena): Update comment. free_list_lock is now needed. (_int_new_arena): Use free_list_lock around detach_arena call. Acquire arena lock after list_lock. Add comment, including FIXME about incorrect synchronization. (get_free_list): Switch to free_list_lock. (reused_arena): Acquire free_list_lock around detach_arena call and attached threads counter update. Add two FIXMEs about incorrect synchronization. (arena_thread_freeres): Switch to free_list_lock. * malloc/malloc.c (struct malloc_state): Update comments to mention free_list_lock.
Diffstat (limited to 'ChangeLog')
-rw-r--r-- | ChangeLog | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog index c06799712e..16e605ae7d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,22 @@ +2015-12-21 Florian Weimer <fweimer@redhat.com> + + [BZ #19182] + * malloc/arena.c (list_lock): Document lock ordering requirements. + (free_list_lock): New lock. + (ptmalloc_lock_all): Comment on free_list_lock. + (ptmalloc_unlock_all2): Reinitialize free_list_lock. + (detach_arena): Update comment. free_list_lock is now needed. + (_int_new_arena): Use free_list_lock around detach_arena call. + Acquire arena lock after list_lock. Add comment, including FIXME + about incorrect synchronization. + (get_free_list): Switch to free_list_lock. + (reused_arena): Acquire free_list_lock around detach_arena call + and attached threads counter update. Add two FIXMEs about + incorrect synchronization. + (arena_thread_freeres): Switch to free_list_lock. + * malloc/malloc.c (struct malloc_state): Update comments to + mention free_list_lock. + 2015-12-21 Siddhesh Poyarekar <siddhesh.poyarekar@linaro.org> * sysdeps/ieee754/dbl-64/s_sin.c (csloww, csloww1, csloww2): |