From patchwork Thu Aug 1 12:06:56 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mark Brown X-Patchwork-Id: 13750409 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 010F9C3DA4A for ; Thu, 1 Aug 2024 13:00:47 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 7E4556B00C6; Thu, 1 Aug 2024 09:00:47 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 795E96B00C7; Thu, 1 Aug 2024 09:00:47 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 6353E6B00C8; Thu, 1 Aug 2024 09:00:47 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 4491E6B00C6 for ; Thu, 1 Aug 2024 09:00:47 -0400 (EDT) Received: from smtpin17.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 87772120D67 for ; Thu, 1 Aug 2024 13:00:46 +0000 (UTC) X-FDA: 82403686092.17.AEC0F9E Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf29.hostedemail.com (Postfix) with ESMTP id 8F729120031 for ; Thu, 1 Aug 2024 13:00:44 +0000 (UTC) Authentication-Results: imf29.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=BeDPSC+s; dmarc=pass (policy=none) header.from=kernel.org; spf=pass (imf29.hostedemail.com: domain of broonie@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=broonie@kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1722517239; a=rsa-sha256; cv=none; b=XMaCbN6zB+WbTeytH8wSCPUtXJPMwGvQTRjn6tqYk8rzKMCGsk96CBFNAfNpLlvdX6hRiD AgyGRfJ6VKyd25HDp7qwcMV0fT1kqh//bTI7hIrYJyXDrW/pljmYpDt+fUNPT62sDhkrxE m01IPEKQbalrYMUOZNJaYaFj/IqViBs= ARC-Authentication-Results: i=1; imf29.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=BeDPSC+s; dmarc=pass (policy=none) header.from=kernel.org; spf=pass (imf29.hostedemail.com: domain of broonie@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=broonie@kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1722517239; 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:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=IfgKesjS90GRp51P7JpwI8TFVKD8QBnSEkCAxrkao8Q=; b=gRfspsDq0zWGbB0ntAOuM1p3Ip/2vRb6Aa4k/5HRTiXgvGFDFeK1C1lOlxB8bTOjZ9V/lu P6hzaEv5Z0OpCmLsLPeqkXNG/jYQTVXrk6gGD4VEgeJaK4ece1QjxNG01fyT0Wuwy6p0rW rrWCtV3EoKz1xXvSjk77yud0VFceDnc= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id C891062864; Thu, 1 Aug 2024 13:00:43 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 27AEAC4AF0F; Thu, 1 Aug 2024 13:00:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1722517243; bh=b9Gx7QUiEPIAdR9RNFo057BasR3/TeEIE9B40jmDJ/c=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=BeDPSC+svn9jwZ5HO/dupvJkJ+PBmmW9gsAmHLvayeZzSX8Pr0bdYPgA7jak1loAG B+uFxjpvPSKnLe9VaN/Hlx7dl+x/cqqPwzW7yFwl42FezkGYJiZN5RCg9+cL1GKlel hyNKn4hrTImC+r+ryQAO+gyOhsxyza1wdGUrMl+hMtYqKJ3sctWYb+MRxx9F8lf/hq AnucC0+Di4cr2GDyoAFoNgeWce0gSe/fC9ceMx9WMu0F+SYnoIrtWWV67/YXMXM5zH dzBjJNaYYqVheTGKdo3bvH2fiTYpPrhOSPFpxnXYKzNJKXaUHR2l72RHB5pjJrFUXZ msXrY9gmhemOA== From: Mark Brown Date: Thu, 01 Aug 2024 13:06:56 +0100 Subject: [PATCH v10 29/40] selftests/clone3: Enable arm64 shadow stack testing MIME-Version: 1.0 Message-Id: <20240801-arm64-gcs-v10-29-699e2bd2190b@kernel.org> References: <20240801-arm64-gcs-v10-0-699e2bd2190b@kernel.org> In-Reply-To: <20240801-arm64-gcs-v10-0-699e2bd2190b@kernel.org> To: Catalin Marinas , 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 Cc: "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, Mark Brown X-Mailer: b4 0.15-dev-37811 X-Developer-Signature: v=1; a=openpgp-sha256; l=1471; i=broonie@kernel.org; h=from:subject:message-id; bh=b9Gx7QUiEPIAdR9RNFo057BasR3/TeEIE9B40jmDJ/c=; b=owEBbQGS/pANAwAKASTWi3JdVIfQAcsmYgBmq4YcGlhpOj6DsmlrQLB9sFNjFcmtR7a/7hcuDPJi 1WPfvR2JATMEAAEKAB0WIQSt5miqZ1cYtZ/in+ok1otyXVSH0AUCZquGHAAKCRAk1otyXVSH0N2DB/ 4u1y7NKCOY37zU67JkUPEpNLsIl+VxURgETEUY2dZxEx6yYfE1aGAywt3yaSnGUEbwMW6edKYAUchr 4lX1kFqnAkhrcwH/nHkE9EbHAp4S4onx5plRdvTdDXwbgmz9ElwxH6PAqrgAMAIjlcAemgMh1vsL8Y Jg0/iFzW4BJk+Rce85J3+MBPkk3olEf8DTdwKM+HBVHKZp7ROhXC+Nae32yoRdbOhKnyP9M7hapDmf uhlvd8GF7sxAUK3Kn9pUCmdB6uiYGekqzCCdForvtzIVTGBYp26p5Q3D2VBstoD/ZA/AUXheARDpJB N5WUxquIwZz86X9UXY/FGZfGSvrPm7 X-Developer-Key: i=broonie@kernel.org; a=openpgp; fpr=3F2568AAC26998F9E813A1C5C3F436CA30F5D8EB X-Rspam-User: X-Rspamd-Queue-Id: 8F729120031 X-Rspamd-Server: rspam01 X-Stat-Signature: uo5d55kjt7o8ix8t67xn7gnegwpk8dyi X-HE-Tag: 1722517244-920552 X-HE-Meta: U2FsdGVkX1/DLIKV1OXUWoH1yj8aVf2n23i1VLEiGSV+xUS/ATVY0Km4pxVbk+f3IMKmjaErBpptm48p/Gc3HSW61lrOa05pYVN/mrXnBJujh83+TkDBJi4Zsd3JAZy492zrUDLEKtIHKM0V5stw7b38q/i6dSVyl+d1HP9YoRW9PZ1LmuMgYzfx3RxEoYk6dfK+EWrGl13R3qFPfvXL2gYIjWDjvSvJ1kvQ7i1MmSNX23mIHcq1s0ubfZYpUvGQrp7752telr6JqlsP51FNh7GihByu5q0heWHGuGi0D2PrBzFhLTvlf02puoViD9M4gv0/cBiGONH7QpJvsfkwSOEIbkIA1qtVD4zBdg3Z8tWvjACGzXxrSWaF4mTViam+gF0Wbt0tGd2WC0AtHvd/lWdloxlAY1MI0/i82imPZ7SFJDA7OjFSLfMuU0JxFCBvUjS32mvHDL3tcxpceiepB7Ew3FsEPiP5/blOxG8X20Tb72B6AdItlz6Qt2Aeun8OLn/llB2zaHDiaQXpbmBBZyy5Rq+YgG5GIBV95tk0r85zllCETSmWdJpCLHOBRugDSvB+IHBZa0nSu5UxuEAtiA1GDxzAkDNvSSzwy1rLB3k6ELDk0I28y9g81dJm9UgtHtWR9Pz/xdoPTeMMAszKfZBpIfJs9fS1xe0w+qQI6Dbjb2aJ5pmO/BA9bZgaGWZ9bkonAxufdBcf7zv/vwMthz/sySUDRkoR9e3nXwC2CuVVRXjcBLyhCHRuCz3qNBNWK2O1baM6jh3oG9VI7Nh98ziNf0RB70SgNL5jN23bF0C7thNBmUcAJ1wcOqEhSxf8C8qmu/uc30KNPHnX41utve3QJ5v08Mf2lfC0XUx2JUDO4zpECT+LUE0Be0SfkwynCvfKy74s48VL694DqbyaaWMbHt18IXFghz9m44r7+mf7mnYdoS+sg6V+lRN4qYesHUwdlFFL5zhWi6IscnF NFfynMRz 13yEsWk8CIvPFUGWKMsjbiL6FcJt+FdVrSUirbX0aXPYdVRvnJGMtmtRttXA+eIwoq6q/lIrsAd93tqIBk40UulmceewODySlNbwpkxsXHVRe684D7eZjOBKGAJHd7/Crt3ZdEnLPMpg+TqdJ5ti/ni/2m79RFPczfb2T8T77DQk8SS/TK6U0G3v0MuBBwHQABVq0oBZk+L2mAvdTle3KZHWN5aEPUACBBvhb2T3XGuqkOvzQe6t2S70R1FNCXRTMbEiMv/ABYbG+rXFM1qOy5YeupKgbNbrKoKhDH5sMPqzUCFRiqxiifExsOkO4abgj4qU7 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: In order to test shadow stack support in clone3() the clone3() selftests need to have a fully inline clone3() call, provide one for arm64. Signed-off-by: Mark Brown --- tools/testing/selftests/clone3/clone3_selftests.h | 26 +++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/tools/testing/selftests/clone3/clone3_selftests.h b/tools/testing/selftests/clone3/clone3_selftests.h index 38d82934668a..e32915085333 100644 --- a/tools/testing/selftests/clone3/clone3_selftests.h +++ b/tools/testing/selftests/clone3/clone3_selftests.h @@ -69,6 +69,32 @@ static pid_t __always_inline sys_clone3(struct __clone_args *args, size_t size) return ret; } +#elif defined(__aarch64__) +static pid_t __always_inline sys_clone3(struct __clone_args *args, size_t size) +{ + register long _num __asm__ ("x8") = __NR_clone3; + register long _args __asm__ ("x0") = (long)(args); + register long _size __asm__ ("x1") = (long)(size); + register long arg2 __asm__ ("x2") = 0; + register long arg3 __asm__ ("x3") = 0; + register long arg4 __asm__ ("x4") = 0; + + __asm__ volatile ( + "svc #0\n" + : "=r"(_args) + : "r"(_args), "r"(_size), + "r"(_num), "r"(arg2), + "r"(arg3), "r"(arg4) + : "memory", "cc" + ); + + if ((int)_args < 0) { + errno = -((int)_args); + return -1; + } + + return _args; +} #else static pid_t sys_clone3(struct __clone_args *args, size_t size) {