From: Szabolcs Nagy Date: Wed, 24 Jun 2020 06:47:15 +0000 (+0100) Subject: nptl: Don't madvise user provided stack X-Git-Tag: glibc-2.32~171 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=087942251f26d5fd5802b8d14e47d460263a0c4d;p=thirdparty%2Fglibc.git nptl: Don't madvise user provided stack User provided stack should not be released nor madvised at thread exit because it's owned by the user. If the memory is shared or file based then MADV_DONTNEED can have unwanted effects. With memory tagging on aarch64 linux the tags are dropped and thus it may invalidate pointers. Tested on aarch64-linux-gnu with MTE, it fixes FAIL: nptl/tst-stack3 FAIL: nptl/tst-stack3-mem --- diff --git a/nptl/pthread_create.c b/nptl/pthread_create.c index 35a9927cf25..6d6ab88960e 100644 --- a/nptl/pthread_create.c +++ b/nptl/pthread_create.c @@ -549,8 +549,9 @@ START_THREAD_DEFN } #endif - advise_stack_range (pd->stackblock, pd->stackblock_size, (uintptr_t) pd, - pd->guardsize); + if (!pd->user_stack) + advise_stack_range (pd->stackblock, pd->stackblock_size, (uintptr_t) pd, + pd->guardsize); if (__glibc_unlikely (pd->cancelhandling & SETXID_BITMASK)) {