[PATCH v7 25/39] arm64/signal: Expose GCS state in signal frames
Thiago Jung Bauermann
thiago.bauermann at linaro.org
Sat Dec 9 14:28:21 PST 2023
Mark Brown <broonie at kernel.org> writes:
> +static int preserve_gcs_context(struct gcs_context __user *ctx)
> +{
> + int err = 0;
> + u64 gcspr;
> +
> + /*
> + * We will add a cap token to the frame, include it in the
> + * GCSPR_EL0 we report to support stack switching via
> + * sigreturn.
> + */
> + gcs_preserve_current_state();
> + gcspr = current->thread.gcspr_el0;
> + if (task_gcs_el0_enabled(current))
> + gcspr -= 8;
> +
> + __put_user_error(GCS_MAGIC, &ctx->head.magic, err);
> + __put_user_error(sizeof(*ctx), &ctx->head.size, err);
> + __put_user_error(gcspr, &ctx->gcspr, err);
> + __put_user_error(current->thread.gcs_el0_mode,
> + &ctx->features_enabled, err);
Other preserve_<foo>_context() functions zero the reserved fields in
ctx. I suggest doing the same here. It helps with backward
compatibility.
> +
> + return err;
> +}
--
Thiago
More information about the linux-riscv
mailing list