[PATCH v13 04/40] prctl: arch-agnostic prctl for shadow stack
Deepak Gupta
debug at rivosinc.com
Tue Oct 1 16:13:15 PDT 2024
On Tue, Oct 01, 2024 at 11:58:43PM +0100, Mark Brown wrote:
>Three architectures (x86, aarch64, riscv) have announced support for
>shadow stacks with fairly similar functionality. While x86 is using
>arch_prctl() to control the functionality neither arm64 nor riscv uses
>that interface so this patch adds arch-agnostic prctl() support to
>get and set status of shadow stacks and lock the current configuation to
>prevent further changes, with support for turning on and off individual
>subfeatures so applications can limit their exposure to features that
>they do not need. The features are:
>
> - PR_SHADOW_STACK_ENABLE: Tracking and enforcement of shadow stacks,
> including allocation of a shadow stack if one is not already
> allocated.
> - PR_SHADOW_STACK_WRITE: Writes to specific addresses in the shadow
> stack.
> - PR_SHADOW_STACK_PUSH: Push additional values onto the shadow stack.
>
>These features are expected to be inherited by new threads and cleared
>on exec(), unknown features should be rejected for enable but accepted
>for locking (in order to allow for future proofing).
>
>This is based on a patch originally written by Deepak Gupta but modified
>fairly heavily, support for indirect landing pads is removed, additional
>modes added and the locking interface reworked. The set status prctl()
>is also reworked to just set flags, if setting/reading the shadow stack
>pointer is required this could be a separate prctl.
>
>Reviewed-by: Thiago Jung Bauermann <thiago.bauermann at linaro.org>
>Reviewed-by: Catalin Marinas <catalin.marinas at arm.com>
>Acked-by: Yury Khrustalev <yury.khrustalev at arm.com>
>Signed-off-by: Mark Brown <broonie at kernel.org>
>---
> include/linux/mm.h | 4 ++++
> include/uapi/linux/prctl.h | 22 ++++++++++++++++++++++
> kernel/sys.c | 30 ++++++++++++++++++++++++++++++
> 3 files changed, 56 insertions(+)
Reviewed-by: Deepak Gupta <debug at rivosinc.com>
>
More information about the linux-riscv
mailing list