diff options
author | Wilco Dijkstra <wilco.dijkstra@arm.com> | 2024-11-25 18:43:08 +0000 |
---|---|---|
committer | Wilco Dijkstra <wilco.dijkstra@arm.com> | 2024-11-29 13:27:13 +0000 |
commit | a08d9a52f967531a77e1824c23b5368c6434a72d (patch) | |
tree | b1527224e051f760a5df6bae69eb2b2522d12377 | |
parent | 2d6427a63cad8056ba6bcaaaa8df21977c8dde3d (diff) | |
download | glibc-a08d9a52f967531a77e1824c23b5368c6434a72d.zip glibc-a08d9a52f967531a77e1824c23b5368c6434a72d.tar.gz glibc-a08d9a52f967531a77e1824c23b5368c6434a72d.tar.bz2 |
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>
-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 b76dde1..8402219 100644 --- a/sysdeps/aarch64/memset.S +++ b/sysdeps/aarch64/memset.S @@ -103,7 +103,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 @@ -136,28 +136,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) |