From: Heather McIntyre <h...@rice.edu>

        * libelf/elf_readall.c (__libelf_readall): Move rwlock_unlock
        before libelf_acquire_all.

Signed-off-by: Heather S. McIntyre <h...@rice.edu>
Signed-off-by: Mark Wielaard <m...@klomp.org>
---
 libelf/elf_readall.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/libelf/elf_readall.c b/libelf/elf_readall.c
index d0f9a28c..2d62d447 100644
--- a/libelf/elf_readall.c
+++ b/libelf/elf_readall.c
@@ -84,6 +84,7 @@ __libelf_readall (Elf *elf)
 
       /* If this is an archive and we have derived descriptors get the
         locks for all of them.  */
+      rwlock_unlock(elf->lock); // lock will be reacquired next line
       libelf_acquire_all (elf);
 
       if (elf->maximum_size == ~((size_t) 0))
@@ -141,10 +142,8 @@ __libelf_readall (Elf *elf)
        __libelf_seterrno (ELF_E_NOMEM);
 
       /* Free the locks on the children.  */
-      libelf_release_all (elf);
+      libelf_release_all (elf); // lock is released
     }
 
-  rwlock_unlock (elf->lock);
-
   return (char *) elf->map_address;
 }
-- 
2.41.0

Reply via email to