Commit d2be3270 authored by Mark Brown's avatar Mark Brown Committed by Will Deacon
Browse files

arm64/gcs: Don't call gcs_free() during flush_gcs()



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: default avatarMark Brown <broonie@kernel.org>
Reviewed-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
Link: https://lore.kernel.org/r/20250611-arm64-gcs-flush-thread-v1-1-cc26feeddabd@kernel.org


Signed-off-by: default avatarWill Deacon <will@kernel.org>
parent 650768c5
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -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);