Adapt RHEL-80538 fix to _dl_find_object backport

Resolves: RHEL-105957
This commit is contained in:
Frédéric Bérat 2025-07-28 12:07:02 +02:00
parent fd535a578c
commit f9e37fbb1e
2 changed files with 39 additions and 1 deletions

33
glibc-RHEL-105957.patch Normal file
View File

@ -0,0 +1,33 @@
Downstream patch only.
Revert changes made to elf/dl-readonly-area.c compared to
ed6a68bac7cd056abda9008019c71b167f0362dc since `_dl_find_object` has
been backported.
Note: `_dl_find_object` isn't directly made available internally
downstream, we can use `__dl_find_object_internal` instead.
diff --git a/elf/dl-readonly-area.c b/elf/dl-readonly-area.c
index 570b99b11527db13..3b39eed06a379ce3 100644
--- a/elf/dl-readonly-area.c
+++ b/elf/dl-readonly-area.c
@@ -40,16 +40,11 @@ check_relro (const struct link_map *l, uintptr_t start, uintptr_t end)
enum dl_readonly_area_error_type
_dl_readonly_area (const void *ptr, size_t size)
{
- /* Protect against concurrent loads and unloads. */
- __rtld_lock_lock_recursive (GL(dl_load_lock));
-
- const struct link_map *l = _dl_find_dso_for_object ((ElfW(Addr)) ptr);
-
- __rtld_lock_unlock_recursive (GL(dl_load_lock));
-
- if (l == NULL)
+ struct dl_find_object dlfo;
+ if (__dl_find_object_internal ((void *)ptr, &dlfo) != 0)
return dl_readonly_area_not_found;
+ const struct link_map *l = dlfo.dlfo_link_map;
uintptr_t ptr_start = (uintptr_t) ptr;
uintptr_t ptr_end = ptr_start + size;

View File

@ -157,7 +157,7 @@ end \
Summary: The GNU libc libraries
Name: glibc
Version: %{glibcversion}
Release: 219%{?dist}
Release: 220%{?dist}
# In general, GPLv2+ is used by programs, LGPLv2+ is used for
# libraries.
@ -1324,6 +1324,7 @@ Patch1014: glibc-RHEL-93320-19.patch
Patch1015: glibc-RHEL-103952.patch
Patch1016: glibc-RHEL-105327.patch
Patch1017: glibc-RHEL-74251.patch
Patch1018: glibc-RHEL-105957.patch
##############################################################################
# Continued list of core "glibc" package information:
@ -3321,6 +3322,10 @@ update_gconv_modules_cache ()
%endif
%changelog
* Mon Jul 28 2025 Frédéric Bérat <fberat@redhat.com> - 2.34-220
- Revert downstream changes as `_dl_find_object` has been backported
(RHEL-105957)
* Fri Jul 25 2025 Frédéric Bérat <fberat@redhat.com> - 2.34-219
- The dynamic linker no longer crashed when processing specific symbol versions.
(RHEL-74251)