diff options
author | Florian Weimer <fweimer@redhat.com> | 2022-08-01 15:49:07 +0200 |
---|---|---|
committer | Florian Weimer <fweimer@redhat.com> | 2022-08-01 15:50:09 +0200 |
commit | 7187efd0aa270c83c428ea6cd0e1cffc34b41a74 (patch) | |
tree | ced89225894bcfe3fd39eea6539b87683d584816 /malloc | |
parent | 032712621fd376def8ee4c1d997b414f29a30108 (diff) | |
download | glibc-7187efd0aa270c83c428ea6cd0e1cffc34b41a74.tar.gz glibc-7187efd0aa270c83c428ea6cd0e1cffc34b41a74.tar.xz glibc-7187efd0aa270c83c428ea6cd0e1cffc34b41a74.zip |
malloc: Use __getrandom_nocancel during tcache initiailization
Cancellation currently cannot happen at this point because dlopen as used by the unwind link always performs additional allocations for libgcc_s.so.1, even if it has been loaded already as a dependency of the main executable. But it seems prudent not to rely on this quirk. Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
Diffstat (limited to 'malloc')
-rw-r--r-- | malloc/malloc.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/malloc/malloc.c b/malloc/malloc.c index bd3c76ed31..430d204156 100644 --- a/malloc/malloc.c +++ b/malloc/malloc.c @@ -254,6 +254,7 @@ /* For tcache double-free check. */ #include <random-bits.h> #include <sys/random.h> +#include <not-cancel.h> /* Debugging: @@ -3153,7 +3154,7 @@ static uintptr_t tcache_key; static void tcache_key_initialize (void) { - if (__getrandom (&tcache_key, sizeof(tcache_key), GRND_NONBLOCK) + if (__getrandom_nocancel (&tcache_key, sizeof(tcache_key), GRND_NONBLOCK) != sizeof (tcache_key)) { tcache_key = random_bits (); |