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 62223C61D97 for ; Fri, 24 Nov 2023 16:35:54 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 6FC156B02B9; Fri, 24 Nov 2023 11:35:52 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 683DC6B02B6; Fri, 24 Nov 2023 11:35:52 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 524F26B02B9; Fri, 24 Nov 2023 11:35:52 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 432BD6B02B4 for ; Fri, 24 Nov 2023 11:35:52 -0500 (EST) Received: from smtpin15.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 1A643160BAB for ; Fri, 24 Nov 2023 16:35:52 +0000 (UTC) X-FDA: 81493399344.15.7754662 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by imf01.hostedemail.com (Postfix) with ESMTP id 387BA4000C for ; Fri, 24 Nov 2023 16:35:50 +0000 (UTC) Authentication-Results: imf01.hostedemail.com; dkim=none; spf=pass (imf01.hostedemail.com: domain of joey.gouly@arm.com designates 217.140.110.172 as permitted sender) smtp.mailfrom=joey.gouly@arm.com; dmarc=pass (policy=none) header.from=arm.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1700843750; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=iHLnaHemKKejje4F1rM1h8+T33LmHCe1a2Az51rSxjU=; b=OuN0bx+Gqse5iNtX/X8vrDaSE11AM2O4CahC+j8uObKv3CIOVvGXKJvT0SQ2nk0t0iT7Mz e2aGmlhl2gy4yKtMSwAOKXXPk8s/PosZlJQMGKv8YHr45/raO6cQJNudsxMt6Ozl7jQ5nw 9zX5fAZCJ0rIO7i6QpjRnveoDuxtptc= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1700843750; a=rsa-sha256; cv=none; b=LEGtG5+xLPpojSDbyXGRjzGRPshALD6+ofbmFIaeukwseF+le+Pg3fVqF5a2/112EQpqrV VEVWrCnlox98kzsaRMPSQix9rCohtxQ4t0ITc5XlKYQtg7kY6Hkv60gPJAcOEMj1uWbVS5 jnHzFcqAKYtVWUf8fo3xY9qzAdS3XQE= ARC-Authentication-Results: i=1; imf01.hostedemail.com; dkim=none; spf=pass (imf01.hostedemail.com: domain of joey.gouly@arm.com designates 217.140.110.172 as permitted sender) smtp.mailfrom=joey.gouly@arm.com; dmarc=pass (policy=none) header.from=arm.com Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id F250B1063; Fri, 24 Nov 2023 08:36:35 -0800 (PST) Received: from e124191.cambridge.arm.com (e124191.cambridge.arm.com [10.1.197.45]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 4F11B3F73F; Fri, 24 Nov 2023 08:35:47 -0800 (PST) From: Joey Gouly To: linux-arm-kernel@lists.infradead.org Cc: akpm@linux-foundation.org, aneesh.kumar@linux.ibm.com, broonie@kernel.org, catalin.marinas@arm.com, dave.hansen@linux.intel.com, joey.gouly@arm.com, maz@kernel.org, oliver.upton@linux.dev, shuah@kernel.org, will@kernel.org, kvmarm@lists.linux.dev, linux-fsdevel@vger.kernel.org, linux-mm@kvack.org, linux-kselftest@vger.kernel.org, James Morse , Suzuki K Poulose , Zenghui Yu Subject: [PATCH v3 11/25] arm64: enable ARCH_HAS_PKEYS on arm64 Date: Fri, 24 Nov 2023 16:34:56 +0000 Message-Id: <20231124163510.1835740-12-joey.gouly@arm.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20231124163510.1835740-1-joey.gouly@arm.com> References: <20231124163510.1835740-1-joey.gouly@arm.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Stat-Signature: mj7er699o5hgxjnf3xqa165ftyd4yy3e X-Rspamd-Server: rspam10 X-Rspamd-Queue-Id: 387BA4000C X-Rspam-User: X-HE-Tag: 1700843750-48607 X-HE-Meta: U2FsdGVkX19QdAeTlyCyCZawt9Rfehq8yQNbF9pFhCo5kuoOMHsQvaCXGqZx8a7/+cQ1LRPpAnv13MU6PzvUFig7nFNtugKyduDGs5k1E+x2OX+9Pu+Vgod3Zpg7N4/2Pm3Xy5AXOBkglDX04Lof7sr6KUnyt7AOHTcKsqXgKNRSQ+VoEhnPzBHU2gelNBmYmcRwcmxRbJOPIko5/bsoL6XIouTULvw/JAjuX2Q0ECtk5TMbQur2BMf0+CD/jgGvREr7YRlIyGPIKO8/2M8zZ5NjYz4d2dY3f777sV0Ie49egsTGtE9h+ReAvdFxF2zMOy+ZgmtbKqvw3IgXRdU/9I6auMxO7fyir9x1ipRejZi0786iI22D9laRA+PrLeDtHfU0cHAo7chm0D6TTWp0Eodn8yeT0t+WA9dcTPsppxNP53ir99IDp7y495+E3Y1J+Y04Z5wZzrQvHDOd23sHCWqbnXynbLpn52ZhzM3t72Fft7Rnx0CMyMylbcV2utYCcLVUiCj+kkErq33LoNh6p4+kR7WQPw1aZtVBNirX6Yq4BiXTrNJ2kupX20Ni51VgJX6thQGulViLUqysC+n5firaoxMlpsGOW1cKBGqoEk8FKgVb2s+7s/xFlokIRDRzzEnEFLymQunbEBsMYKIayOVr5tdjUIp9A8X/K6mBFWBAIhLfOJDsBd8Zs1ywEqSWp84Ed8OglVl6YKvwBoTmkeY2sG7gXMUp9wamAjudTi4gOesnpyU7BedRxu+OTf3ZFPGK1g5Jv9UoJ59S1vvlF9eXPKXSyxi4FtrCn03zShNFcCvdceeExknIsA9P7J1Tl63FWHlQULoB0J7wufcnnai4crYlnTZR/oCeODfMdmFgAfSdHt2zDs922xkQ2JBk/uIEhbUwZ8OIwsp61dR4Xucbi83RD91En1+P7o/+5eWIE6KG2kM0kOGsltBu4ghw3NMpi6oka5aYRptI+Zg hyuGScG1 n8i5KSmlmb61UThqnbFxYcIbp8aRenLvjKin0t3CVsxE7aRsFM5m9C3U4GMPUh5PaWX2im84RhvgUEB+77beNZAo4S42iPghO0fBZ07qVGabLc9o73lW5y7eN1H6QJV70M8JpDLfjnHK8yCPBoytnuszLd45dmII9vRBNKPdMhlGkaURTuy82SjtjQ5vhvA8d731z5kYfNBkjozjzGla2LaFdgzfBH5z0HdTJ81euCSWTOHuJSRccHuhNvf9cppg8/xK0G4PbsFlsCgY= 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: Enable the ARCH_HAS_PKEYS config, but provide dummy functions for the entire interface. Signed-off-by: Joey Gouly Cc: Catalin Marinas Cc: Will Deacon --- arch/arm64/Kconfig | 2 ++ arch/arm64/include/asm/pkeys.h | 54 ++++++++++++++++++++++++++++++++++ arch/arm64/mm/mmu.c | 7 +++++ 3 files changed, 63 insertions(+) create mode 100644 arch/arm64/include/asm/pkeys.h diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig index d7df6c603190..72a71a9834dd 100644 --- a/arch/arm64/Kconfig +++ b/arch/arm64/Kconfig @@ -2082,6 +2082,8 @@ menu "ARMv8.9 architectural features" config ARM64_POE prompt "Permission Overlay Extension" def_bool y + select ARCH_USES_HIGH_VMA_FLAGS + select ARCH_HAS_PKEYS help The Permission Overlay Extension is used to implement Memory Protection Keys. Memory Protection Keys provides a mechanism for diff --git a/arch/arm64/include/asm/pkeys.h b/arch/arm64/include/asm/pkeys.h new file mode 100644 index 000000000000..5761fb48fd53 --- /dev/null +++ b/arch/arm64/include/asm/pkeys.h @@ -0,0 +1,54 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (C) 2023 Arm Ltd. + * + * Based on arch/x86/include/asm/pkeys.h +*/ + +#ifndef _ASM_ARM64_PKEYS_H +#define _ASM_ARM64_PKEYS_H + +#define ARCH_VM_PKEY_FLAGS (VM_PKEY_BIT0 | VM_PKEY_BIT1 | VM_PKEY_BIT2) + +#define arch_max_pkey() 0 + +int arch_set_user_pkey_access(struct task_struct *tsk, int pkey, + unsigned long init_val); + +static inline bool arch_pkeys_enabled(void) +{ + return false; +} + +static inline int vma_pkey(struct vm_area_struct *vma) +{ + return -1; +} + +static inline int arch_override_mprotect_pkey(struct vm_area_struct *vma, + int prot, int pkey) +{ + return -1; +} + +static inline int execute_only_pkey(struct mm_struct *mm) +{ + return -1; +} + +static inline bool mm_pkey_is_allocated(struct mm_struct *mm, int pkey) +{ + return false; +} + +static inline int mm_pkey_alloc(struct mm_struct *mm) +{ + return -1; +} + +static inline int mm_pkey_free(struct mm_struct *mm, int pkey) +{ + return -EINVAL; +} + +#endif /* _ASM_ARM64_PKEYS_H */ diff --git a/arch/arm64/mm/mmu.c b/arch/arm64/mm/mmu.c index 15f6347d23b6..f7bf41eae904 100644 --- a/arch/arm64/mm/mmu.c +++ b/arch/arm64/mm/mmu.c @@ -1486,3 +1486,10 @@ void ptep_modify_prot_commit(struct vm_area_struct *vma, unsigned long addr, pte { set_pte_at(vma->vm_mm, addr, ptep, pte); } + +#ifdef CONFIG_ARCH_HAS_PKEYS +int arch_set_user_pkey_access(struct task_struct *tsk, int pkey, unsigned long init_val) +{ + return -ENOSPC; +} +#endif -- 2.25.1