elf: Refactor _dl_update_slotinfo to avoid use after free
commitc0669ae1a629e16b536bf11cdd0865e0dbcf4bee
authorSzabolcs Nagy <szabolcs.nagy@arm.com>
Wed, 30 Dec 2020 21:52:38 +0000 (30 21:52 +0000)
committerSzabolcs Nagy <szabolcs.nagy@arm.com>
Thu, 15 Apr 2021 08:30:43 +0000 (15 09:30 +0100)
tree4bdda7e9516feb74e1950ce374b8c4d2dd0d7992
parentc489c35054c39d7f2437ca61b369e3ede448f022
elf: Refactor _dl_update_slotinfo to avoid use after free

map is not valid to access here because it can be freed by a concurrent
dlclose: during tls access (via __tls_get_addr) _dl_update_slotinfo is
called without holding dlopen locks. So don't check the modid of map.

The map == 0 and map != 0 code paths can be shared (avoiding the dtv
resize in case of map == 0 is just an optimization: larger dtv than
necessary would be fine too).

Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
elf/dl-tls.c