[PATCH 0/2] aarch64: Support locking GCS
Yury Khrustalev
yury.khrustalev@arm.com
Fri Dec 12 15:46:57 GMT 2025
Support locking GCS via a new tunable. At the moment GCS status is enabled
if this is requested and supported, however it is possible to disable GCS
for a thread via a prctl() syscall. Locking GCS status will prevent this.
This patch series adds new tunable glibc.cpu.aarch64_gcs_lock that by default
has value 1 (lock GCS) but it only has effect if GCS is actually enabled which
depends on the glibc.cpu.aarch64_gcs tunable value and system support for GCS.
The caveat is that current released version of the kernel does flush the GCS
locking state on exec which is required. However, there is a patch for this
already [1]. We would like to include this new tunable in the upcoming Glibc
release (possibly with default value 0) so that we could back-port default
value change later in case Linux fix doesn't land in the upcoming kernel
release.
Passes regression on AArch64. OK for trunk?
Base commit: f56382e67e
[1]: https://lore.kernel.org/all/20251129-arm64-gcs-flush-lock-v1-1-902b3ba6f39d@kernel.org/
---
Yury Khrustalev (2):
aarch64: Lock GCS with glibc.cpu.aarch64_gcs_lock tunable
aarch64: Tests for locking GCS
manual/tunables.texi | 16 +++++
sysdeps/aarch64/dl-gcs.c | 6 ++
sysdeps/aarch64/dl-start.S | 18 ++++++
sysdeps/aarch64/dl-tunables.list | 6 ++
sysdeps/aarch64/rtld-global-offsets.sym | 5 +-
sysdeps/unix/sysv/linux/aarch64/Makefile | 17 +++++
.../unix/sysv/linux/aarch64/cpu-features.c | 7 ++-
.../unix/sysv/linux/aarch64/dl-procruntime.c | 16 +++++
sysdeps/unix/sysv/linux/aarch64/libc-start.h | 12 ++++
.../unix/sysv/linux/aarch64/tst-gcs-execv.c | 62 ++++++++++++++++++
.../sysv/linux/aarch64/tst-gcs-lock-static.c | 1 +
.../unix/sysv/linux/aarch64/tst-gcs-lock.c | 63 +++++++++++++++++++
.../linux/aarch64/tst-gcs-unlock-static.c | 2 +
.../unix/sysv/linux/aarch64/tst-gcs-unlock.c | 2 +
14 files changed, 229 insertions(+), 4 deletions(-)
create mode 100644 sysdeps/unix/sysv/linux/aarch64/tst-gcs-execv.c
create mode 100644 sysdeps/unix/sysv/linux/aarch64/tst-gcs-lock-static.c
create mode 100644 sysdeps/unix/sysv/linux/aarch64/tst-gcs-lock.c
create mode 100644 sysdeps/unix/sysv/linux/aarch64/tst-gcs-unlock-static.c
create mode 100644 sysdeps/unix/sysv/linux/aarch64/tst-gcs-unlock.c
--
2.47.3
More information about the Libc-alpha
mailing list