From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id C0243C52D7C for ; Wed, 21 Aug 2024 12:54:45 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 31A426B009B; Wed, 21 Aug 2024 08:54:45 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 2A1516B0105; Wed, 21 Aug 2024 08:54:45 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 11D8F6B00AA; Wed, 21 Aug 2024 08:54:45 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id E21926B0105 for ; Wed, 21 Aug 2024 08:54:44 -0400 (EDT) Received: from smtpin13.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 8D4231A096E for ; Wed, 21 Aug 2024 12:54:44 +0000 (UTC) X-FDA: 82476246888.13.AF21D90 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf29.hostedemail.com (Postfix) with ESMTP id EC70512000B for ; Wed, 21 Aug 2024 12:54:42 +0000 (UTC) Authentication-Results: imf29.hostedemail.com; dkim=none; dmarc=fail reason="SPF not aligned (relaxed), No valid DKIM" header.from=arm.com (policy=none); spf=pass (imf29.hostedemail.com: domain of cmarinas@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=cmarinas@kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1724244824; a=rsa-sha256; cv=none; b=4akMAX0rr7bRV0vy5kkq97PIlVVAPA2Yizyh5/pU218PsuJaRwTX38fVcphhoYalDWo0Yq ZJFpken+PCsrKAtt2HWVy43ezDTkqPj4ViLbMMEwYTkQWmLqs5hsPEuqdoDnx9dKptfE8u FCFeoRc2RJyqauI07DnTxznfn8iM56s= ARC-Authentication-Results: i=1; imf29.hostedemail.com; dkim=none; dmarc=fail reason="SPF not aligned (relaxed), No valid DKIM" header.from=arm.com (policy=none); spf=pass (imf29.hostedemail.com: domain of cmarinas@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=cmarinas@kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1724244824; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=BJdd+BfFZG/D09vD7q8fgzRHUq4ij9C/snJIOnLUiJQ=; b=swVAlqLueV/qNO41/J1iO/Guv5wtQwnChwPAncooMUG35BKOE4Y6/s3RvEB3nwp5+Z2RP7 Z0ktDNw9QT8q8Rn4jZtNj2BMSOgauW2jQehyOMQOKyH79LPt4zDhj97xR9PFF2p65Fig0d pSD3fenNatkKop1Ep9HkoqHx0prx2OQ= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id DD48F60F82; Wed, 21 Aug 2024 12:54:41 +0000 (UTC) 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> 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> X-Rspamd-Queue-Id: EC70512000B X-Rspam-User: X-Rspamd-Server: rspam05 X-Stat-Signature: 4ak9r176uzrftf677x1uxtqbe15etrsc X-HE-Tag: 1724244882-66277 X-HE-Meta: U2FsdGVkX1/BHyupha2MIkPhICUnXe92/8oIKxQmWpX4qJ/9lf40quA3umIYamxPMTVzY/zzrfFDE+Vd5vFLW9o32Zyo2WQPS7cdQMbmYIB1KTUev7E1Viwe7of4C6+wWZ51fbTzObxwMDrydGa6r/phcbGWNI2Dmhk4WvVew91lyo2e1nWdsJKHEtovkY2Uttxjp1JU3P+NJkgc2SFQ5wvFysEFr531OtUyLsR7H2Tb2F+VUf6mwHPGLssCT25dM9CfsrLb5jP39WrsWH6x5lH0gCx9GXtxlxko/7wYcPv6RU0YvjprSqHlGy3DUYwm97MLoe1v4f3QJpXgF3K6t88++Gay4EDmM1r+R0EdCsR0VYWYN34Bx8+NeQtrlgtWKICzccLfNhrmbRT0MDy/HiRps0r78Xs5T2ltmBqqGGCPAvMdPIfZiUJ1ThJphMVHxoRTTBc0XDKxYSWOfy9YShoWjCPrXvOvWAaBcOec36sCOTyBnEPEH7un+4GCLWX6hs8z2YD/DAxUl+FXPJUdCWoyJ2gKirPxb34KkSuGFU0RtvaBiPIbDvxr2GPS9SLOcQ9bRUvUPFhmi56qj8HFzaX2R967n7S9FD1fYDey1mcrtuqh/6dHlStYvGK7+6ajOkEVTQJTUUwsYTwUJ4WrvcN15SjDxeBJw/GF1SMS7J/gVBI5vW1qwiRghrmXpYBR9mku5untCYITjctyf771JqbdF7k7IDeQfMlaELwgwl+M8cCu/GXza9pWxNWez4zVp+tDu2w164ZGaBcIaLToLWq18XZzRmQJC3Yo1FoB5U/QH93aZhI0SrJIWjE/OlQtzEKDLNjJ/+MG1HtzbqkkXN5Ra9y//mwiaWDxBDW+0GsiWv+Or1vT7PPjihaygsovnkVoTIGgPxTO/4k32Y0Qu02xtV6VtpycydY/d6F+f9GxMd7XZ88EbM3EK5L0HegYjI7PFd+bxdih3OJMZjN D1ie3C3K WKVbk+kgnOFATfrLD2NeGK9yYv37A1PciCvx+nEos2kZoGw2O83TuUU8TB8QSdrZFgj5L8ouEinbDvUZ4HgB2scCYfODn8lHKxql+N3k/iAz3nJEC3m1aKOeHaFb6DtZmXrMap+r4I9Edt4CLORSSoJ3NwEjP9JxhKRsmM196n/530nq2F6oFm4wnat1mcS2jMt+R0fkk3hO0qre1HO3HcDjDtMVS5+jJWMctP8swIkSF+Vv+sBh31qZczLg9t7X0ML87+L7Em+G3SDfCPmhAIopdhlD7o6Th/cmJDdRtNm4qbCYt2NLYPJGWBoJfQrYRWUHRKtifUP3TVyeBC4wWnF12Ts7yfm5kRmXkcemotU+6qaWr31+FT+bshdq5IOS+zlAbO7MHXh2H1wFNgrvTDHsP4AxYtyz9rYIjFfv0W1STrUPg0SvdMb6S/zTfplhXH3KMZM4Wam7xEqhoIvIgRuxjXbpQ6ummuOuG X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: 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