[PATCH] arm64/gcs: Flush the GCS locking state on exec
Yury Khrustalev
yury.khrustalev at arm.com
Mon Dec 1 01:19:18 PST 2025
On Sat, Nov 29, 2025 at 12:48:45AM +0000, Mark Brown wrote:
> When we exec a new task we forget to flush the set of locked GCS mode bits.
> Since we do flush the rest of the state this means that if GCS is locked
> the new task will be unable to enable GCS, it will be locked as being
> disabled. Add the expected flush.
>
> Fixes: fc84bc5378a8 ("arm64/gcs: Context switch GCS state for EL0")
> Reported-by: Yury Khrustalev <Yury.Khrustalev at arm.com>
> Signed-off-by: Mark Brown <broonie at kernel.org>
Thanks! I've tested this patch and it works as expected.
Tested-by: Yury Khrustalev <yury.khrustalev at arm.com>
> ---
> arch/arm64/kernel/process.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/arch/arm64/kernel/process.c b/arch/arm64/kernel/process.c
> index fba7ca102a8c..489554931231 100644
> --- a/arch/arm64/kernel/process.c
> +++ b/arch/arm64/kernel/process.c
> @@ -292,6 +292,7 @@ static void flush_gcs(void)
> current->thread.gcs_base = 0;
> current->thread.gcs_size = 0;
> current->thread.gcs_el0_mode = 0;
> + current->thread.gcs_el0_locked = 0;
> write_sysreg_s(GCSCRE0_EL1_nTR, SYS_GCSCRE0_EL1);
> write_sysreg_s(0, SYS_GCSPR_EL0);
> }
>
> ---
> base-commit: ac3fd01e4c1efce8f2c054cdeb2ddd2fc0fb150d
> change-id: 20251128-arm64-gcs-flush-lock-163eab9c22f4
>
> Best regards,
> --
> Mark Brown <broonie at kernel.org>
>
More information about the linux-arm-kernel
mailing list