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 91589C3DA49 for ; Thu, 25 Jul 2024 15:57:18 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 237C86B0082; Thu, 25 Jul 2024 11:57:18 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 1E7E16B0083; Thu, 25 Jul 2024 11:57:18 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 0AFC66B0085; Thu, 25 Jul 2024 11:57:18 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id E07206B0082 for ; Thu, 25 Jul 2024 11:57:17 -0400 (EDT) Received: from smtpin15.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 9178D1212AF for ; Thu, 25 Jul 2024 15:57:17 +0000 (UTC) X-FDA: 82378729314.15.68DF8CB Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by imf04.hostedemail.com (Postfix) with ESMTP id D616840006 for ; Thu, 25 Jul 2024 15:57:15 +0000 (UTC) Authentication-Results: imf04.hostedemail.com; dkim=none; spf=pass (imf04.hostedemail.com: domain of Dave.Martin@arm.com designates 217.140.110.172 as permitted sender) smtp.mailfrom=Dave.Martin@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=1721923034; 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=nc4rbQCg67MBNoumHKMTl/oeccffun74VB8yyiNcLIY=; b=UzUu5qNDSqgMmi4oGSYmh2P4PZDabQXq9ZOTh6RJciE/XgBxkVM57rRRWOnnMD3pi8ZcWn L3exGgRJg+Hs/Hg73ejJvmGkFY7RscNjZdKcc3iL7tS5BQECRuKFzI9PU9TrcT4Z1Ugatr GgGByqPSz74V9Dk1o+nP8KKY6iQBlmo= ARC-Authentication-Results: i=1; imf04.hostedemail.com; dkim=none; spf=pass (imf04.hostedemail.com: domain of Dave.Martin@arm.com designates 217.140.110.172 as permitted sender) smtp.mailfrom=Dave.Martin@arm.com; dmarc=pass (policy=none) header.from=arm.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1721923034; a=rsa-sha256; cv=none; b=w8bwK1wwV05hG7anikrM+jbbpLXwqDQVIiMxMbsP9c+CLcQELrhl878lYUJX24AYYvfSGM gnUNtAV2k8eaoJzoH9ESE0O9zkQHrpo1W0l8wTVRMKAN7I2aLiqrjlUNzdHObzLcLwdS6x 5d+CdLt+EIiAm+bUsa9NiE4ZIYsuSco= 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 68E441007; Thu, 25 Jul 2024 08:57:40 -0700 (PDT) Received: from e133380.arm.com (e133380.arm.com [10.1.197.55]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id E83AC3F5A1; Thu, 25 Jul 2024 08:57:11 -0700 (PDT) Date: Thu, 25 Jul 2024 16:57:09 +0100 From: Dave Martin To: Joey Gouly Cc: linux-arm-kernel@lists.infradead.org, akpm@linux-foundation.org, aneesh.kumar@kernel.org, aneesh.kumar@linux.ibm.com, bp@alien8.de, broonie@kernel.org, catalin.marinas@arm.com, christophe.leroy@csgroup.eu, dave.hansen@linux.intel.com, hpa@zytor.com, linux-fsdevel@vger.kernel.org, linux-mm@kvack.org, linuxppc-dev@lists.ozlabs.org, maz@kernel.org, mingo@redhat.com, mpe@ellerman.id.au, naveen.n.rao@linux.ibm.com, npiggin@gmail.com, oliver.upton@linux.dev, shuah@kernel.org, szabolcs.nagy@arm.com, tglx@linutronix.de, will@kernel.org, x86@kernel.org, kvmarm@lists.linux.dev Subject: Re: [PATCH v4 15/29] arm64: handle PKEY/POE faults Message-ID: References: <20240503130147.1154804-1-joey.gouly@arm.com> <20240503130147.1154804-16-joey.gouly@arm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20240503130147.1154804-16-joey.gouly@arm.com> X-Rspam-User: X-Stat-Signature: 3cma73unwcewwh9a6pbgt7dyygnuo4gz X-Rspamd-Queue-Id: D616840006 X-Rspamd-Server: rspam11 X-HE-Tag: 1721923035-165476 X-HE-Meta: U2FsdGVkX18aJz/kETPw4+u35DxYq6+PSus6ZJL3NAtFrAN0CVLcv229cEdkla5+dPtedxILA9HaCSihKjIYlkCNUWd1kWIPDSXT/J3Pvpj+9uda/OnUq8XeRqC1icwvA9cfxBK0bWDe0K1fOzut/KKFGpPrHGDteV7SOOOia7XGGGhnZcppoTEr5mu8sG7RNJlzWZ65QNcfY+UPrfgXlua1oAHmIjeLSHUab9CsoYoMiPBNbAcKUHegLgCxiuSLz5Di8uewKlJB3o5fHujVMeS7gKkFKhBBr4sAhc/XsUfSmeLdmCZIWXoCR6/ZFNWV9qhwpYaGWGU62/xZVtGncIamPiUo5aGUADTVavNQ5Kqk7PBB3nltBkACgm4TuONBA/GHjN+lvQV4jMotVr8oRa0jciCzfQxP5ABktLoGqqzVwskp/e586QgNja3Zzr6ZVOWGPM+M3A5s9pjfwQGfAQpWcTDRtQsYpD9WJENlwscZrMg6861uN6h48GW9IWwzL9+ikMJk+OV9AIeTe+W5oK1JiEplSClkwTCqcKyx0fMgcZ4wGCm8dOGFI/XnFDXVongJy5cdTN/T2oHybuvOxGNYu+VUfckE5m0oU+IFinXRj7UofywYVo5+ZlgnLIxKrq7NMqIt/xBvqoOehuetcCQ5foE0fZ9i3zTBAA29XxDg9/n2kk99Bgfc0mEPlhrPpKZ3r+VoBH7jFUZhpoVvUwCkH2F8x7oQXF547tg3OfjSRc1eq7bkK8Pz66Ds4NCZJhuiXzajJ6Nc98ZZfSUI0e2hnQf98+5y/YOcmecmqAH1Up6fimyq2I7x6oQxJD24TfJU0iuIQSngeiecCRKgw6NoeU/MDBgAkkYOTbSiKBHlfb6fhPUKyibnAoMuX5MMUgufe9Xljs69EsSZaR+EnzrVqnJN6Ob/ExITM2WOCOtAa++/coG8I8igBi57HAroXve7FhlEz7gs3D2kDu/ SZqI9FdO Ssdm9v8Gq1A9OzaVrR2QVFnru3st/6vfCzfbN7OWu4EzC7WiARmHTw8MmtZzwqtVK91n3RVuCl6FK6Xi8FbFljdmYUuTznYiBv87tLJ14t9Cr5/bvx+8LYqoViM8WaiII4Zj1D69KpALx4lbL+0JpvMSYAmamr/kIB8QIy6wGql4jAByT4rZq2NwXwHT1X+SmYXuSvlRli/mDyY/GV1FdCVSob99ySQYcYLvzKwLXMp76KvU5MllWioCVlwEdwhW8W3yDWkQ4HW1ARPs= 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 Fri, May 03, 2024 at 02:01:33PM +0100, Joey Gouly wrote: > If a memory fault occurs that is due to an overlay/pkey fault, report that to > userspace with a SEGV_PKUERR. > > Signed-off-by: Joey Gouly > Cc: Catalin Marinas > Cc: Will Deacon > --- > arch/arm64/include/asm/traps.h | 1 + > arch/arm64/kernel/traps.c | 12 ++++++-- > arch/arm64/mm/fault.c | 56 ++++++++++++++++++++++++++++++++-- > 3 files changed, 64 insertions(+), 5 deletions(-) > > diff --git a/arch/arm64/include/asm/traps.h b/arch/arm64/include/asm/traps.h > index eefe766d6161..f6f6f2cb7f10 100644 > --- a/arch/arm64/include/asm/traps.h > +++ b/arch/arm64/include/asm/traps.h > @@ -25,6 +25,7 @@ try_emulate_armv8_deprecated(struct pt_regs *regs, u32 insn) > void force_signal_inject(int signal, int code, unsigned long address, unsigned long err); > void arm64_notify_segfault(unsigned long addr); > void arm64_force_sig_fault(int signo, int code, unsigned long far, const char *str); > +void arm64_force_sig_fault_pkey(int signo, int code, unsigned long far, const char *str, int pkey); > void arm64_force_sig_mceerr(int code, unsigned long far, short lsb, const char *str); > void arm64_force_sig_ptrace_errno_trap(int errno, unsigned long far, const char *str); > > diff --git a/arch/arm64/kernel/traps.c b/arch/arm64/kernel/traps.c > index 215e6d7f2df8..1bac6c84d3f5 100644 > --- a/arch/arm64/kernel/traps.c > +++ b/arch/arm64/kernel/traps.c > @@ -263,16 +263,24 @@ static void arm64_show_signal(int signo, const char *str) > __show_regs(regs); > } > > -void arm64_force_sig_fault(int signo, int code, unsigned long far, > - const char *str) > +void arm64_force_sig_fault_pkey(int signo, int code, unsigned long far, > + const char *str, int pkey) > { > arm64_show_signal(signo, str); > if (signo == SIGKILL) > force_sig(SIGKILL); > + else if (code == SEGV_PKUERR) > + force_sig_pkuerr((void __user *)far, pkey); Is signo definitely SIGSEGV here? It looks to me like we can get in here for SIGBUS, SIGTRAP etc. si_codes are not unique between different signo here, so I'm wondering whether this should this be: else if (signo == SIGSEGV && code == SEGV_PKUERR) ...? > else > force_sig_fault(signo, code, (void __user *)far); > } > > +void arm64_force_sig_fault(int signo, int code, unsigned long far, > + const char *str) > +{ > + arm64_force_sig_fault_pkey(signo, code, far, str, 0); Is there a reason not to follow the same convention as elsewhere, where -1 is passed for "no pkey"? If we think this should never be called with signo == SIGSEGV && code == SEGV_PKUERR and no valid pkey but if it's messy to prove, then maybe a WARN_ON_ONCE() would be worth it here? [...] Cheers ---Dave