]> git.ipfire.org Git - thirdparty/glibc.git/commit
malloc: Fix list_lock/arena lock deadlock [BZ #19182]
authorFlorian Weimer <fweimer@redhat.com>
Mon, 21 Dec 2015 15:42:46 +0000 (16:42 +0100)
committerAdhemerval Zanella <adhemerval.zanella@linaro.org>
Fri, 27 Jan 2017 15:16:28 +0000 (13:16 -0200)
commitb533edfeedf66e971b1b29affd8e2f1619987dc9
treeeefe4ad1bed9bb765e7fe54c0dbc561633ddf8c6
parent4b31bd831ab205ff24ae3a2b8c4f8135c182c7d7
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.
ChangeLog
malloc/arena.c
malloc/malloc.c