From 6165f2d6a0588946112cc01e67507f5bb63fe642 Mon Sep 17 00:00:00 2001
From: Koichiro Iwao <meta@almalinux.org>
Date: Mon, 23 Dec 2024 15:15:01 +0900
Subject: [PATCH] Backport patch from upstream BZ #32470

---
 glibc-upstream-2.39-bz-32470.patch | 36 ++++++++++++++++++++++++++++++
 glibc.spec                         |  8 ++++++-
 2 files changed, 43 insertions(+), 1 deletion(-)
 create mode 100644 glibc-upstream-2.39-bz-32470.patch

diff --git a/glibc-upstream-2.39-bz-32470.patch b/glibc-upstream-2.39-bz-32470.patch
new file mode 100644
index 0000000..a28ce33
--- /dev/null
+++ b/glibc-upstream-2.39-bz-32470.patch
@@ -0,0 +1,36 @@
+From 2c8a7f14fac3628b6a06cc76cdfda54a7ac20386 Mon Sep 17 00:00:00 2001
+From: Florian Weimer <fweimer@redhat.com>
+Date: Tue, 17 Dec 2024 18:12:03 +0100
+Subject: [PATCH] x86: Avoid integer truncation with large cache sizes (bug
+ 32470)
+
+Some hypervisors report 1 TiB L3 cache size.  This results
+in some variables incorrectly getting zeroed, causing crashes
+in memcpy/memmove because invariants are violated.
+
+(cherry picked from commit 61c3450db96dce96ad2b24b4f0b548e6a46d68e5)
+---
+ sysdeps/x86/dl-cacheinfo.h | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/sysdeps/x86/dl-cacheinfo.h b/sysdeps/x86/dl-cacheinfo.h
+index 5a98f70364..1f68968a9a 100644
+--- a/sysdeps/x86/dl-cacheinfo.h
++++ b/sysdeps/x86/dl-cacheinfo.h
+@@ -959,11 +959,11 @@ dl_init_cacheinfo (struct cpu_features *cpu_features)
+     non_temporal_threshold = maximum_non_temporal_threshold;
+ 
+   /* NB: The REP MOVSB threshold must be greater than VEC_SIZE * 8.  */
+-  unsigned int minimum_rep_movsb_threshold;
++  unsigned long int minimum_rep_movsb_threshold;
+   /* NB: The default REP MOVSB threshold is 4096 * (VEC_SIZE / 16) for
+      VEC_SIZE == 64 or 32.  For VEC_SIZE == 16, the default REP MOVSB
+      threshold is 2048 * (VEC_SIZE / 16).  */
+-  unsigned int rep_movsb_threshold;
++  unsigned long int rep_movsb_threshold;
+   if (CPU_FEATURE_USABLE_P (cpu_features, AVX512F)
+       && !CPU_FEATURE_PREFERRED_P (cpu_features, Prefer_No_AVX512))
+     {
+-- 
+2.46.2
+
diff --git a/glibc.spec b/glibc.spec
index c35c8f8..14b0588 100644
--- a/glibc.spec
+++ b/glibc.spec
@@ -171,7 +171,7 @@ Version: %{glibcversion}
 #   generator to make the generated requires interchangeable between Rawhide
 #   and ELN (.elnYY < .fcXX).
 %global baserelease 23
-Release: %{baserelease}%{?dist}.alma.1
+Release: %{baserelease}%{?dist}.alma.2
 
 # Licenses:
 #
@@ -432,6 +432,9 @@ Patch119: glibc-upstream-2.39-94.patch
 Patch120: RHEL-18039-1.patch
 Patch121: RHEL-18039-2.patch
 
+# AlmaLinux backport: https://sourceware.org/bugzilla/show_bug.cgi?id=32470
+Patch1000: glibc-upstream-2.39-bz-32470.patch
+
 ##############################################################################
 # Continued list of core "glibc" package information:
 ##############################################################################
@@ -2664,6 +2667,9 @@ update_gconv_modules_cache ()
 %endif
 
 %changelog
+* Mon Dec 23 2024 Koichiro Iwao <meta@almalinux.org> - 2.39-23.alma.2
+- Apply patch from upstream BZ #32470
+
 * Fri Dec 06 2024 Eduard Abdullin <eabdullin@almalinux.org> - 2.39-23.alma.1
 - Overwrite target for x86_64_v2