]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
kselftest/arm64: Fix SVE write data generation for SME only systems
authorMark Brown <broonie@kernel.org>
Fri, 18 Jul 2025 22:14:51 +0000 (23:14 +0100)
committerCatalin Marinas <catalin.marinas@arm.com>
Tue, 22 Jul 2025 08:34:00 +0000 (09:34 +0100)
fp-ptrace does not handle SME only systems correctly when generating data,
on SME only systems scenarios where we are not in streaming mode will not
have an expected vector length. This leads to attempts to do memcpy()s of
zero byte arrays which can crash, fix this by skipping generation of SVE
data for cases where we do not expect to have an active vector length.

Signed-off-by: Mark Brown <broonie@kernel.org>
Link: https://lore.kernel.org/r/20250718-arm64-fp-ptrace-sme-only-v1-2-3b96dd19a503@kernel.org
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
tools/testing/selftests/arm64/fp/fp-ptrace.c

index 52d4d8fa29581f29ef460774fcf98703995c1dfd..a709485cf5536d416aa937336ea8b5bb55b21271 100644 (file)
@@ -1151,6 +1151,9 @@ static void sve_write_expected(struct test_config *config)
        int vl = vl_expected(config);
        int sme_vq = __sve_vq_from_vl(config->sme_vl_expected);
 
+       if (!vl)
+               return;
+
        fill_random(z_expected, __SVE_ZREGS_SIZE(__sve_vq_from_vl(vl)));
        fill_random(p_expected, __SVE_PREGS_SIZE(__sve_vq_from_vl(vl)));
 
@@ -1178,6 +1181,9 @@ static void sve_write_sve(pid_t child, struct test_config *config)
        vl = vl_expected(config);
        vq = __sve_vq_from_vl(vl);
 
+       if (!vl)
+               return;
+
        iov.iov_len = SVE_PT_SVE_OFFSET + SVE_PT_SVE_SIZE(vq, SVE_PT_REGS_SVE);
        iov.iov_base = malloc(iov.iov_len);
        if (!iov.iov_base) {