diff options
| author | Wilco Dijkstra <wilco.dijkstra@arm.com> | 2024-11-25 18:43:08 +0000 |
|---|---|---|
| committer | Wilco Dijkstra <wilco.dijkstra@arm.com> | 2025-02-28 14:23:10 +0000 |
| commit | 41eb2f8b5847079caca90a74659456adbb80ec29 (patch) | |
| tree | ae9dea20e025277ff920d513817a8280fd9abe6a | |
| parent | 544fb349d35efd5f86ed7e482759ff21496a32fd (diff) | |
| download | glibc-41eb2f8b5847079caca90a74659456adbb80ec29.tar.xz glibc-41eb2f8b5847079caca90a74659456adbb80ec29.zip | |
AArch64: Remove zva_128 from memset
Remove ZVA 128 support from memset - the new memset no longer
guarantees count >= 256, which can result in underflow and a
crash if ZVA size is 128 ([1]). Since only one CPU uses a ZVA
size of 128 and its memcpy implementation was removed in commit
e162ab2bf1b82c40f29e1925986582fa07568ce8, remove this special
case too.
[1] https://sourceware.org/pipermail/libc-alpha/2024-November/161626.html
Reviewed-by: Andrew Pinski <quic_apinski@quicinc.com>
(cherry picked from commit a08d9a52f967531a77e1824c23b5368c6434a72d)
| -rw-r--r-- | sysdeps/aarch64/memset.S | 25 |
1 files changed, 1 insertions, 24 deletions
diff --git a/sysdeps/aarch64/memset.S b/sysdeps/aarch64/memset.S index caafb019e2..71814d0b2f 100644 --- a/sysdeps/aarch64/memset.S +++ b/sysdeps/aarch64/memset.S @@ -104,7 +104,7 @@ L(set_long): mrs zva_val, dczid_el0 and zva_val, zva_val, 31 cmp zva_val, 4 /* ZVA size is 64 bytes. */ - b.ne L(zva_128) + b.ne L(no_zva) #endif stp q0, q0, [dst, 32] bic dst, dstin, 63 @@ -137,28 +137,5 @@ L(no_zva_loop): stp q0, q0, [dstend, -32] ret -#ifndef ZVA64_ONLY - .p2align 4 -L(zva_128): - cmp zva_val, 5 /* ZVA size is 128 bytes. */ - b.ne L(no_zva) - - stp q0, q0, [dst, 32] - stp q0, q0, [dst, 64] - stp q0, q0, [dst, 96] - bic dst, dst, 127 - sub count, dstend, dst /* Count is now 128 too large. */ - sub count, count, 128 + 128 /* Adjust count and bias for loop. */ -1: add dst, dst, 128 - dc zva, dst - subs count, count, 128 - b.hi 1b - stp q0, q0, [dstend, -128] - stp q0, q0, [dstend, -96] - stp q0, q0, [dstend, -64] - stp q0, q0, [dstend, -32] - ret -#endif - END (MEMSET) libc_hidden_builtin_def (MEMSET) |
