arm64/gcs: Don't call gcs_free() when releasing task_struct
authorMark Brown <broonie@kernel.org>
Mon, 14 Jul 2025 11:21:27 +0000 (12:21 +0100)
committerWill Deacon <will@kernel.org>
Tue, 15 Jul 2025 13:58:23 +0000 (14:58 +0100)
commit75fdf823f94b18fa29ecbad9f39ecf8c57e8b8c6
treecb379c5bc647c1f675eaf17908ebf684765fd37f
parent344b6580472451390d070c65c27f59716a1deecb
arm64/gcs: Don't call gcs_free() when releasing task_struct

Currently we call gcs_free() when releasing task_struct but this is
redundant, it attempts to deallocate any kernel managed userspace GCS
which should no longer be relevant and resets values in the struct we're
in the process of freeing.

By the time arch_release_task_struct() is called the mm will have been
disassociated from the task so the check for a mm in gcs_free() will
always be false, for threads that are exiting leaving the mm active
deactivate_mm() will have been called previously and freed any kernel
managed GCS.

Signed-off-by: Mark Brown <broonie@kernel.org>
Link: https://lore.kernel.org/r/20250714-arm64-gcs-release-task-v2-1-8a83cadfc846@kernel.org
Signed-off-by: Will Deacon <will@kernel.org>
arch/arm64/kernel/process.c
arch/arm64/mm/gcs.c