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 F15D4C4332F for ; Fri, 10 Nov 2023 17:18:02 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 5AEF28D00F3; Fri, 10 Nov 2023 12:18:02 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 55F3E8D0005; Fri, 10 Nov 2023 12:18:02 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 44E318D00F3; Fri, 10 Nov 2023 12:18:02 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 35EA88D0005 for ; Fri, 10 Nov 2023 12:18:02 -0500 (EST) Received: from smtpin16.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 063731601C2 for ; Fri, 10 Nov 2023 17:18:02 +0000 (UTC) X-FDA: 81442702404.16.283C143 Received: from sin.source.kernel.org (sin.source.kernel.org [145.40.73.55]) by imf27.hostedemail.com (Postfix) with ESMTP id BA05940023 for ; Fri, 10 Nov 2023 17:17:59 +0000 (UTC) Authentication-Results: imf27.hostedemail.com; dkim=none; spf=pass (imf27.hostedemail.com: domain of cmarinas@kernel.org designates 145.40.73.55 as permitted sender) smtp.mailfrom=cmarinas@kernel.org; dmarc=fail reason="SPF not aligned (relaxed), No valid DKIM" header.from=arm.com (policy=none) ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1699636680; 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=18ANqLCqCLRlYNAPJD5USsUTuXAB8ItcN3Irk1LtFl0=; b=Oj7TdQQBlnC0K4kbu+FALaYCUTr/sbNfVTyK10rkwqkX5QlB56+baJUgSEbbR8p3kZrrgd 5nlN1jRlB0f9rWb7HJagYPv5FM48R3vwJwpB1ZJddyUp1g2OfZWMct+1ZF8zULqQ7PXXaf pPXTFWzKjorHLHFPOoTSTbb30FEDyBw= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1699636680; a=rsa-sha256; cv=none; b=K6XVnLsqlhJ9OtJ+dXzxMgZBAXqUcrH3n1Q1dHS9JeJv71hj7eHgJaHtD7qWYO6Za2y1h3 VWJ23kvCFFHBER0eHALpvuidgpi4MKID+S5RYh9+ngspc9etkGDGRbcCHjczeGNh9lPFFF P1C60byq1GuLXt2Domj/MCSlD/Hi2wE= ARC-Authentication-Results: i=1; imf27.hostedemail.com; dkim=none; spf=pass (imf27.hostedemail.com: domain of cmarinas@kernel.org designates 145.40.73.55 as permitted sender) smtp.mailfrom=cmarinas@kernel.org; dmarc=fail reason="SPF not aligned (relaxed), No valid DKIM" header.from=arm.com (policy=none) Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sin.source.kernel.org (Postfix) with ESMTP id 9365ACE1174; Fri, 10 Nov 2023 17:17:56 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 4EAB3C433C7; Fri, 10 Nov 2023 17:17:54 +0000 (UTC) Date: Fri, 10 Nov 2023 17:17:51 +0000 From: Catalin Marinas To: "Aneesh Kumar K.V" Cc: Jason Gunthorpe , David Hildenbrand , akpm@linux-foundation.org, Christophe Leroy , linux-mm@kvack.org, linuxppc-dev@lists.ozlabs.org Subject: Re: get_user_pages() and EXEC_ONLY mapping. Message-ID: References: <87bkc1oe8c.fsf@linux.ibm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <87bkc1oe8c.fsf@linux.ibm.com> X-Rspamd-Queue-Id: BA05940023 X-Rspam-User: X-Stat-Signature: 8j1srbzngmpqooyuhjtzt4jz9nab6s1x X-Rspamd-Server: rspam03 X-HE-Tag: 1699636679-530205 X-HE-Meta: U2FsdGVkX1/IuemfjP1v0ykvK75iH8Op6hKHlYIPjRoHM6XqwFsKDwwykMTs035j0VnhBzsUDw47M4VjQVOatw9pQySUS0qi+d9fenMERU9PjH9nyjXGoJGlg+YqAhoSmANCQHAcyuIJePAtdQ/jCyYA65uVmWeQrTjo8EPsaOLLzmeopY7JjF1BAUVm/rqYMWpVEkFAm4yhqzZDH57eAKPNDoR8tO5f2I1RYG4sxCSaADQqCzbvhRa5FIcPyqwlijQCvMT4P5thvvL9ciNFgobNtFazYjgZj5+jfwKmtUn0DFsVpL9xX+apbZBHLN0qz9teg//Ep1CPuwj1ItlKGjm0vJ7E2NHE2nBS2VxRBnmypZlLYbiV9zhnXn56PR1o/zil9Xv+o0w9gpiWx6l5oRI7HW7LyIFq8RJBGKLXrMph0YB8Y4u7pYBAg/wLAbGbZC2uOSjUW7uV/gCYHp9z68Ok7mzPl7ZZIjT6Qj3Lb2qxPntI+NRcJQPBZU6hdDq5EM0D2M0wruvoMOWdc3fGQilWp+hUgcu8oKDnjHWpTENpPHCdf7qbwABmEDZTFbZF6N31Lx2ClKVviie7YDbDWa7fpCcsnptcLUwIvsv19CFT/doHSFvDuBJGSz1Ox5VDxqdp4wqleWAr79a+D18GKqJZCJ2K352qDinf7znd1ASDenAs70PLHca91p3y1ox6Ud4t/Om33E09X+i9IkcQOURRmR9XRXBn+hyYpNbSFumTHkIPcH0om3EmQ12AXqn7CjFRDDLnGMkwUSEphzYsJ3KTcZ1bgrV/ezcaqzhMZTDXmmLyJgiXiKzKUyfck6GzrRHGmfKwH6pdGR4pxj3oe2nX4I18Cc1nitCBPNjo2WYxpjK3m3zqTFw5mv5RKo6xHCpA1XZZyG5+sLHN+jrqQzkLogIFD2lr/Hwp85V1iCauLJVi6cDI53AfnxK/iAdGeC/ItTWKbzZ5whqtj1W 4GoUK62d ota/QuZ+DfMkRH+SMpBx6yHO3N1kO/LGWsBzua5SE/CGDMnUs4qW0hi4y4nqa8ET4/3b8mCZ/CtWlyXeao7EhDO96klBwvlQGTyKo5wM+w2Rj9DQv2kSGLah4fNRR08sgGA6dRNQpv2n/hL5ybGHXNRoJLqvBh9dkZ4L5HgEf8/IPTnLHKVd9Blt4p3rkodXLPS5fbamfYXGNMMPsWezRTgqGRiKpEfKf4suWLGne6jbRg/GaFPRp3eTGdKTQsSj47wpq8xmFDnuD44vMeLpxNqnsTbyrttbGz2xfu9UgEgQDBcK8SzT3NirL2sRIhsu0AHfWikWKYk8qEJPCM6nZQyjGPY2om1kf8JDvcUh9+IJhJXA= 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, Nov 10, 2023 at 08:19:23PM +0530, Aneesh Kumar K.V wrote: > Some architectures can now support EXEC_ONLY mappings and I am wondering > what get_user_pages() on those addresses should return. Earlier > PROT_EXEC implied PROT_READ and pte_access_permitted() returned true for > that. But arm64 does have this explicit comment that says > > /* > * p??_access_permitted() is true for valid user mappings (PTE_USER > * bit set, subject to the write permission check). For execute-only > * mappings, like PROT_EXEC with EPAN (both PTE_USER and PTE_UXN bits > * not set) must return false. PROT_NONE mappings do not have the > * PTE_VALID bit set. > */ > > Is that correct? We should be able to get struct page for PROT_EXEC > mappings? I don't remember why we ended up with this briefly looking at the code, pte_access_permitted() is only used on the fast GUP path. On the slow path, there is a check_vma_flags() call which returns -EFAULT if the vma is not readable. So the pte_access_permitted() on the fast path matches the semantics of the slow path. If one wants the page structure, FOLL_FORCE ignores the read check (on the slow path), though I think it still fails if VM_MAYREAD is not set. Unless you have a real use-case where this is not sufficient, I'd leave the behaviour as is on arm64 (and maybe update other architectures that support exec-only to do the same). -- Catalin