]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
arm64/gcs: Don't call gcs_free() during flush_gcs()
authorMark Brown <broonie@kernel.org>
Wed, 11 Jun 2025 16:28:13 +0000 (17:28 +0100)
committerWill Deacon <will@kernel.org>
Thu, 12 Jun 2025 16:18:01 +0000 (17:18 +0100)
Currently we call gcs_free() during flush_gcs() to reset the thread
state for GCS. This includes unmapping any kernel allocated GCS, but
this is redundant when doing a flush_thread() since we are
reinitialising the thread memory too. Inline the reinitialisation of the
thread struct.

Signed-off-by: Mark Brown <broonie@kernel.org>
Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
Link: https://lore.kernel.org/r/20250611-arm64-gcs-flush-thread-v1-1-cc26feeddabd@kernel.org
Signed-off-by: Will Deacon <will@kernel.org>
arch/arm64/kernel/process.c

index a5ca15daeb8a6cca9b4f009eae8cdc27c6bf4d0a..5954cec196602048c0e7557cf164315c8d5dac6b 100644 (file)
@@ -288,7 +288,9 @@ static void flush_gcs(void)
        if (!system_supports_gcs())
                return;
 
-       gcs_free(current);
+       current->thread.gcspr_el0 = 0;
+       current->thread.gcs_base = 0;
+       current->thread.gcs_size = 0;
        current->thread.gcs_el0_mode = 0;
        write_sysreg_s(GCSCRE0_EL1_nTR, SYS_GCSCRE0_EL1);
        write_sysreg_s(0, SYS_GCSPR_EL0);