]> git.dujemihanovic.xyz Git - linux.git/commitdiff
arm64/ptrace: Flush FP state when setting ZT0
authorMark Brown <broonie@kernel.org>
Thu, 3 Aug 2023 00:19:06 +0000 (01:19 +0100)
committerCatalin Marinas <catalin.marinas@arm.com>
Thu, 3 Aug 2023 14:42:14 +0000 (15:42 +0100)
When setting ZT0 via ptrace we do not currently force a reload of the
floating point register state from memory, do that to ensure that the newly
set value gets loaded into the registers on next task execution.

The function was templated off the function for FPSIMD which due to our
providing the option of embedding a FPSIMD regset within the SVE regset
does not directly include the flush.

Fixes: f90b529bcbe5 ("arm64/sme: Implement ZT0 ptrace support")
Signed-off-by: Mark Brown <broonie@kernel.org>
Cc: stable@vger.kernel.org
Link: https://lore.kernel.org/r/20230803-arm64-fix-ptrace-zt0-flush-v1-1-72e854eaf96e@kernel.org
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
arch/arm64/kernel/ptrace.c

index d7f4f0d1ae120248b0a483c71245fb991b4925d2..740e81e9db04c6e29b8f370fc8170ae30fa9ca17 100644 (file)
@@ -1180,6 +1180,8 @@ static int zt_set(struct task_struct *target,
        if (ret == 0)
                target->thread.svcr |= SVCR_ZA_MASK;
 
+       fpsimd_flush_task_state(target);
+
        return ret;
 }