[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20250407161951.560865-1-jeremy.linton@arm.com>
Date: Mon, 7 Apr 2025 11:19:45 -0500
From: Jeremy Linton <jeremy.linton@....com>
To: linux-trace-kernel@...r.kernel.org
Cc: linux-perf-users@...r.kernel.org,
mhiramat@...nel.org,
oleg@...hat.com,
peterz@...radead.org,
acme@...nel.org,
namhyung@...nel.org,
mark.rutland@....com,
alexander.shishkin@...ux.intel.com,
jolsa@...nel.org,
irogers@...gle.com,
adrian.hunter@...el.com,
kan.liang@...ux.intel.com,
thiago.bauermann@...aro.org,
broonie@...nel.org,
yury.khrustalev@....com,
kristina.martsenko@....com,
liaochang1@...wei.com,
catalin.marinas@....com,
will@...nel.org,
linux-arm-kernel@...ts.infradead.org,
linux-kernel@...r.kernel.org,
Jeremy Linton <jeremy.linton@....com>
Subject: [PATCH v2 0/6] arm64: Enable UPROBES with GCS
Currently uprobes and the Arm Guarded Control Stack (GCS) feature are
exclusive of each other. This restriction needs to be lifted in order
to utilize GCS for generic Linux distro images where the expectation
is that core debugging features like uprobes work.
This series adds some user accessors to read/push/pop the userspace
shadow stack. It then utilizes those functions in the uprobe paths
as needed to synchronize GCS with the changes in control flow at
probe locations.
Along the way we fix a bug in the core gcs task handling and export
some uprobe quality of life functionality for use in arch specific code.
The KCONFIG restriction is then dropped.
v1->v2:
Drop uprobe_warn() patch
Fix copy_thread_gcs() bug created by fixing task_gcs_el0_enabled()
Comments, now describe issues with reading userspace GCS pages
Rebased to 6.15
Jeremy Linton (6):
arm64/gcs: task_gcs_el0_enable() should use passed task
arm64: probes: Break ret out from bl/blr
arm64: uaccess: Add additional userspace GCS accessors
arm64: probes: Add GCS support to bl/blr/ret
arm64: uprobes: Add GCS support to uretprobes
arm64: Kconfig: Remove GCS restrictions on UPROBES
arch/arm64/Kconfig | 1 -
arch/arm64/include/asm/gcs.h | 2 +-
arch/arm64/include/asm/uaccess.h | 42 ++++++++++++++++++++++++
arch/arm64/kernel/probes/decode-insn.c | 7 ++--
arch/arm64/kernel/probes/simulate-insn.c | 38 ++++++++++++++++++---
arch/arm64/kernel/probes/simulate-insn.h | 3 +-
arch/arm64/kernel/probes/uprobes.c | 30 +++++++++++++++++
arch/arm64/kernel/process.c | 6 ++--
8 files changed, 115 insertions(+), 14 deletions(-)
--
2.49.0
Powered by blists - more mailing lists