[PATCH v2] nptl: Fix pthread_getattr_np when modules with execstack are allowed (BZ 32897)
Luke Drummond
luke.drummond@codeplay.com
Thu Apr 24 15:43:54 GMT 2025
On Thu Apr 24, 2025 at 4:27 PM BST, Adhemerval Zanella wrote:
> The BZ 32653 fix (12a497c716f0a06be5946cabb8c3ec22a079771e) kept the
> stack pointer zeroing from make_main_stack_executable on
> _dl_make_stack_executable. However, previously the 'stack_endp'
> pointed to temporary variable created before the call of
> _dl_map_object_from_fd; while now we use the __libc_stack_end
> directly.
>
> Since pthread_getattr_np relies on correct __libc_stack_end, if
> _dl_make_stack_executable is called (for instance, when
> glibc.rtld.execstack=2 is set) __libc_stack_end will be set to zero,
> and the call will always fail.
>
> The __libc_stack_end zero was used a mitigation hardening, but since
> 52a01100ad011293197637e42b5be1a479a2f4ae it is used solely on
> pthread_getattr_np code. So there is no point in zeroing anymore.
>
> Checked on x86_64-linux-gnu and i686-linux-gnu.
> --
> Changes from v1:
> * Better description on when this bug happens on commit message.
> * Improve tst-stack2.c test coverage.
LGTM
Thanks
Luke
More information about the Libc-alpha
mailing list