From: Catalin Marinas <catalin.marinas@arm.com>
To: Mark Brown <broonie@kernel.org>
Cc: Will Deacon <will@kernel.org>, Jonathan Corbet <corbet@lwn.net>,
Andrew Morton <akpm@linux-foundation.org>,
Marc Zyngier <maz@kernel.org>,
Oliver Upton <oliver.upton@linux.dev>,
James Morse <james.morse@arm.com>,
Suzuki K Poulose <suzuki.poulose@arm.com>,
Arnd Bergmann <arnd@arndb.de>, Oleg Nesterov <oleg@redhat.com>,
Eric Biederman <ebiederm@xmission.com>,
Shuah Khan <shuah@kernel.org>,
"Rick P. Edgecombe" <rick.p.edgecombe@intel.com>,
Deepak Gupta <debug@rivosinc.com>,
Ard Biesheuvel <ardb@kernel.org>,
Szabolcs Nagy <Szabolcs.Nagy@arm.com>,
Kees Cook <kees@kernel.org>, "H.J. Lu" <hjl.tools@gmail.com>,
Paul Walmsley <paul.walmsley@sifive.com>,
Palmer Dabbelt <palmer@dabbelt.com>,
Albert Ou <aou@eecs.berkeley.edu>,
Florian Weimer <fweimer@redhat.com>,
Christian Brauner <brauner@kernel.org>,
Thiago Jung Bauermann <thiago.bauermann@linaro.org>,
Ross Burton <ross.burton@arm.com>,
linux-arm-kernel@lists.infradead.org, linux-doc@vger.kernel.org,
kvmarm@lists.linux.dev, linux-fsdevel@vger.kernel.org,
linux-arch@vger.kernel.org, linux-mm@kvack.org,
linux-kselftest@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-riscv@lists.infradead.org
Subject: Re: [PATCH v10 21/40] arm64/gcs: Implement shadow stack prctl() interface
Date: Wed, 21 Aug 2024 13:54:33 +0100 [thread overview]
Message-ID: <ZsXjiTlfLE61-jJC@arm.com> (raw)
In-Reply-To: <20240801-arm64-gcs-v10-21-699e2bd2190b@kernel.org>
On Thu, Aug 01, 2024 at 01:06:48PM +0100, Mark Brown wrote:
> Implement the architecture neutral prtctl() interface for setting the
s/prtctl/prctl/
> +int arch_set_shadow_stack_status(struct task_struct *task, unsigned long arg)
> +{
> + unsigned long gcs, size;
> + int ret;
> +
> + if (!system_supports_gcs())
> + return -EINVAL;
> +
> + if (is_compat_thread(task_thread_info(task)))
> + return -EINVAL;
> +
> + /* Reject unknown flags */
> + if (arg & ~PR_SHADOW_STACK_SUPPORTED_STATUS_MASK)
> + return -EINVAL;
> +
> + ret = gcs_check_locked(task, arg);
> + if (ret != 0)
> + return ret;
> +
> + /* If we are enabling GCS then make sure we have a stack */
> + if (arg & PR_SHADOW_STACK_ENABLE) {
> + if (!task_gcs_el0_enabled(task)) {
> + /* Do not allow GCS to be reenabled */
> + if (task->thread.gcs_base)
> + return -EINVAL;
> +
> + if (task != current)
> + return -EBUSY;
> +
> + size = gcs_size(0);
> + gcs = alloc_gcs(0, size);
> + if (!gcs)
> + return -ENOMEM;
> +
> + task->thread.gcspr_el0 = gcs + size - sizeof(u64);
> + task->thread.gcs_base = gcs;
> + task->thread.gcs_size = size;
> + if (task == current)
> + write_sysreg_s(task->thread.gcspr_el0,
> + SYS_GCSPR_EL0);
> +
> + }
> + }
Nitpick: use a single 'if' instead of nesting (unless subsequent patches
add more to the first block).
Otherwise it looks fine.
Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
next prev parent reply other threads:[~2024-08-21 12:54 UTC|newest]
Thread overview: 110+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-08-01 12:06 [PATCH v10 00/40] arm64/gcs: Provide support for GCS in userspace Mark Brown
2024-08-01 12:06 ` [PATCH v10 01/40] arm64/mm: Restructure arch_validate_flags() for extensibility Mark Brown
2024-08-15 10:39 ` Catalin Marinas
2024-08-01 12:06 ` [PATCH v10 02/40] prctl: arch-agnostic prctl for shadow stack Mark Brown
2024-08-15 10:42 ` Catalin Marinas
2024-08-01 12:06 ` [PATCH v10 03/40] mman: Add map_shadow_stack() flags Mark Brown
2024-08-15 15:45 ` Catalin Marinas
2024-08-01 12:06 ` [PATCH v10 04/40] arm64: Document boot requirements for Guarded Control Stacks Mark Brown
2024-08-15 17:00 ` Catalin Marinas
2024-08-15 18:14 ` Mark Brown
2024-08-01 12:06 ` [PATCH v10 05/40] arm64/gcs: Document the ABI " Mark Brown
2024-08-16 11:09 ` Catalin Marinas
2024-08-16 12:02 ` Mark Brown
2024-08-01 12:06 ` [PATCH v10 06/40] arm64/sysreg: Add definitions for architected GCS caps Mark Brown
2024-08-16 11:10 ` Catalin Marinas
2024-08-01 12:06 ` [PATCH v10 07/40] arm64/gcs: Add manual encodings of GCS instructions Mark Brown
2024-08-16 11:10 ` Catalin Marinas
2024-08-01 12:06 ` [PATCH v10 08/40] arm64/gcs: Provide put_user_gcs() Mark Brown
2024-08-16 11:12 ` Catalin Marinas
2024-08-01 12:06 ` [PATCH v10 09/40] arm64/gcs: Provide basic EL2 setup to allow GCS usage at EL0 and EL1 Mark Brown
2024-08-16 11:13 ` Catalin Marinas
2024-08-01 12:06 ` [PATCH v10 10/40] arm64/cpufeature: Runtime detection of Guarded Control Stack (GCS) Mark Brown
2024-08-16 11:15 ` Catalin Marinas
2024-08-01 12:06 ` [PATCH v10 11/40] arm64/mm: Allocate PIE slots for EL0 guarded control stack Mark Brown
2024-08-16 14:16 ` Catalin Marinas
2024-08-01 12:06 ` [PATCH v10 12/40] mm: Define VM_SHADOW_STACK for arm64 when we support GCS Mark Brown
2024-08-15 15:20 ` Edgecombe, Rick P
2024-08-15 15:26 ` Mark Brown
2024-08-15 16:39 ` Mark Brown
2024-08-15 17:53 ` Edgecombe, Rick P
2024-08-15 18:19 ` Mark Brown
2024-08-16 13:59 ` Edgecombe, Rick P
2024-08-19 9:07 ` Catalin Marinas
2024-08-01 12:06 ` [PATCH v10 13/40] arm64/mm: Map pages for guarded control stack Mark Brown
2024-08-19 9:10 ` Catalin Marinas
2024-08-19 16:33 ` Mark Brown
2024-08-20 14:59 ` Catalin Marinas
2024-08-20 15:28 ` Mark Brown
2024-08-20 17:30 ` Catalin Marinas
2024-08-01 12:06 ` [PATCH v10 14/40] KVM: arm64: Manage GCS access and registers for guests Mark Brown
2024-08-16 14:15 ` Marc Zyngier
2024-08-16 14:40 ` Mark Brown
2024-08-16 14:52 ` Marc Zyngier
2024-08-01 12:06 ` [PATCH v10 15/40] arm64/idreg: Add overrride for GCS Mark Brown
2024-08-19 9:10 ` Catalin Marinas
2024-08-01 12:06 ` [PATCH v10 16/40] arm64/hwcap: Add hwcap " Mark Brown
2024-08-19 9:12 ` Catalin Marinas
2024-08-01 12:06 ` [PATCH v10 17/40] arm64/traps: Handle GCS exceptions Mark Brown
2024-08-19 9:12 ` Catalin Marinas
2024-08-01 12:06 ` [PATCH v10 18/40] arm64/mm: Handle GCS data aborts Mark Brown
2024-08-19 9:17 ` Catalin Marinas
2024-08-19 15:14 ` Mark Brown
2024-08-01 12:06 ` [PATCH v10 19/40] arm64/gcs: Context switch GCS state for EL0 Mark Brown
2024-08-19 11:46 ` Catalin Marinas
2024-08-19 15:44 ` Mark Brown
2024-08-20 17:07 ` Catalin Marinas
2024-08-20 17:56 ` Mark Brown
2024-08-21 8:50 ` Catalin Marinas
2024-08-21 12:48 ` Mark Brown
2024-08-01 12:06 ` [PATCH v10 20/40] arm64/gcs: Ensure that new threads have a GCS Mark Brown
2024-08-19 12:04 ` Catalin Marinas
2024-08-19 15:57 ` Mark Brown
2024-08-20 17:28 ` Catalin Marinas
2024-08-01 12:06 ` [PATCH v10 21/40] arm64/gcs: Implement shadow stack prctl() interface Mark Brown
2024-08-21 12:54 ` Catalin Marinas [this message]
2024-08-21 13:41 ` Mark Brown
2024-08-01 12:06 ` [PATCH v10 22/40] arm64/mm: Implement map_shadow_stack() Mark Brown
2024-08-21 15:36 ` Catalin Marinas
2024-08-01 12:06 ` [PATCH v10 23/40] arm64/signal: Set up and restore the GCS context for signal handlers Mark Brown
2024-08-14 14:51 ` Dave Martin
2024-08-14 16:00 ` Mark Brown
2024-08-15 13:37 ` Dave Martin
2024-08-15 14:45 ` Mark Brown
2024-08-15 15:11 ` Dave Martin
2024-08-15 15:29 ` Mark Brown
2024-08-15 16:31 ` Dave Martin
2024-08-21 17:28 ` Catalin Marinas
2024-08-21 18:03 ` Mark Brown
2024-08-21 18:18 ` Catalin Marinas
2024-08-01 12:06 ` [PATCH v10 24/40] arm64/signal: Expose GCS state in signal frames Mark Brown
2024-08-14 15:09 ` Dave Martin
2024-08-14 16:21 ` Mark Brown
2024-08-15 14:01 ` Dave Martin
2024-08-15 15:05 ` Mark Brown
2024-08-15 15:33 ` Dave Martin
2024-08-15 15:46 ` Mark Brown
2024-08-15 16:40 ` Dave Martin
2024-08-21 17:40 ` Catalin Marinas
2024-08-01 12:06 ` [PATCH v10 25/40] arm64/ptrace: Expose GCS via ptrace and core files Mark Brown
2024-08-21 17:57 ` Catalin Marinas
2024-08-21 18:27 ` Mark Brown
2024-08-21 18:41 ` Mark Brown
2024-08-01 12:06 ` [PATCH v10 26/40] arm64: Add Kconfig for Guarded Control Stack (GCS) Mark Brown
2024-08-21 17:58 ` Catalin Marinas
2024-08-01 12:06 ` [PATCH v10 27/40] kselftest/arm64: Verify the GCS hwcap Mark Brown
2024-08-01 12:06 ` [PATCH v10 28/40] kselftest: Provide shadow stack enable helpers for arm64 Mark Brown
2024-08-01 12:06 ` [PATCH v10 29/40] selftests/clone3: Enable arm64 shadow stack testing Mark Brown
2024-08-01 12:06 ` [PATCH v10 30/40] kselftest/arm64: Add GCS as a detected feature in the signal tests Mark Brown
2024-08-01 12:06 ` [PATCH v10 31/40] kselftest/arm64: Add framework support for GCS to signal handling tests Mark Brown
2024-08-01 12:06 ` [PATCH v10 32/40] kselftest/arm64: Allow signals tests to specify an expected si_code Mark Brown
2024-08-01 12:07 ` [PATCH v10 33/40] kselftest/arm64: Always run signals tests with GCS enabled Mark Brown
2024-08-01 12:07 ` [PATCH v10 34/40] kselftest/arm64: Add very basic GCS test program Mark Brown
2024-08-01 12:07 ` [PATCH v10 35/40] kselftest/arm64: Add a GCS test program built with the system libc Mark Brown
2024-08-01 12:07 ` [PATCH v10 36/40] kselftest/arm64: Add test coverage for GCS mode locking Mark Brown
2024-08-01 12:07 ` [PATCH v10 37/40] kselftest/arm64: Add GCS signal tests Mark Brown
2024-08-01 12:07 ` [PATCH v10 38/40] kselftest/arm64: Add a GCS stress test Mark Brown
2024-08-01 12:07 ` [PATCH v10 39/40] kselftest/arm64: Enable GCS for the FP stress tests Mark Brown
2024-08-01 12:07 ` [PATCH v10 40/40] KVM: selftests: arm64: Add GCS registers to get-reg-list Mark Brown
2024-08-02 16:03 ` [PATCH v10 00/40] arm64/gcs: Provide support for GCS in userspace Anders Roxell
2024-08-16 14:06 ` Marc Zyngier
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ZsXjiTlfLE61-jJC@arm.com \
--to=catalin.marinas@arm.com \
--cc=Szabolcs.Nagy@arm.com \
--cc=akpm@linux-foundation.org \
--cc=aou@eecs.berkeley.edu \
--cc=ardb@kernel.org \
--cc=arnd@arndb.de \
--cc=brauner@kernel.org \
--cc=broonie@kernel.org \
--cc=corbet@lwn.net \
--cc=debug@rivosinc.com \
--cc=ebiederm@xmission.com \
--cc=fweimer@redhat.com \
--cc=hjl.tools@gmail.com \
--cc=james.morse@arm.com \
--cc=kees@kernel.org \
--cc=kvmarm@lists.linux.dev \
--cc=linux-arch@vger.kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=linux-riscv@lists.infradead.org \
--cc=maz@kernel.org \
--cc=oleg@redhat.com \
--cc=oliver.upton@linux.dev \
--cc=palmer@dabbelt.com \
--cc=paul.walmsley@sifive.com \
--cc=rick.p.edgecombe@intel.com \
--cc=ross.burton@arm.com \
--cc=shuah@kernel.org \
--cc=suzuki.poulose@arm.com \
--cc=thiago.bauermann@linaro.org \
--cc=will@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).