31 lines
1.3 KiB
Diff
31 lines
1.3 KiB
Diff
|
commit 2c8a7f14fac3628b6a06cc76cdfda54a7ac20386
|
||
|
Author: Florian Weimer <fweimer@redhat.com>
|
||
|
Date: Tue Dec 17 18:12:03 2024 +0100
|
||
|
|
||
|
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)
|
||
|
|
||
|
diff --git a/sysdeps/x86/dl-cacheinfo.h b/sysdeps/x86/dl-cacheinfo.h
|
||
|
index 5a98f70364220da4..1f68968a9a457586 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))
|
||
|
{
|