From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 23B2A192D6A; Wed, 21 Aug 2024 12:54:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1724244882; cv=none; b=ToDoclyanAW+xVNJzpN005F7wMpcezBIxOs+EhoFXyvp453QAq/5Y4Bcz54rOe3vN/T0Egww9MwTUHgjqK1AWSidS6OhKjJRQ338AO18p12jj6vLL1gOtW92yVVsIeAQ8drWxl3JyNSdmyGUUnh/ikFJ0Ekkcw7WFmgWv/BtExw= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1724244882; c=relaxed/simple; bh=gPZjU2t1BOenZRMDnNzEExdLNiNY+uelWC4Rm00hsJ8=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=Xe3inQ9tMZBy8P+3wb1x/XuM+CqUgIvxEF6h2xv/TjlWa1NgVeV7JwvyfnleYDijKfmoIc5v2/5UJ3SmfK5mIjSFrN2K7hJdvc5+LshOqqV68YXFEoVjUxZ63Z8N0vUymuvUG+h5zaRMj5ekBuKz+7Ks72ywdG5S80wOjY8DscM= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 Received: by smtp.kernel.org (Postfix) with ESMTPSA id 16F86C32782; Wed, 21 Aug 2024 12:54:35 +0000 (UTC) Date: Wed, 21 Aug 2024 13:54:33 +0100 From: Catalin Marinas To: Mark Brown Cc: Will Deacon , Jonathan Corbet , Andrew Morton , Marc Zyngier , Oliver Upton , James Morse , Suzuki K Poulose , Arnd Bergmann , Oleg Nesterov , Eric Biederman , Shuah Khan , "Rick P. Edgecombe" , Deepak Gupta , Ard Biesheuvel , Szabolcs Nagy , Kees Cook , "H.J. Lu" , Paul Walmsley , Palmer Dabbelt , Albert Ou , Florian Weimer , Christian Brauner , Thiago Jung Bauermann , Ross Burton , 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 Message-ID: References: <20240801-arm64-gcs-v10-0-699e2bd2190b@kernel.org> <20240801-arm64-gcs-v10-21-699e2bd2190b@kernel.org> Precedence: bulk X-Mailing-List: linux-fsdevel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline 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