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 7AFF9C7618E for ; Sun, 23 Apr 2023 00:46:37 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 771526B0075; Sat, 22 Apr 2023 20:46:36 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 721086B0078; Sat, 22 Apr 2023 20:46:36 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 6364C6B007B; Sat, 22 Apr 2023 20:46:36 -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 52CAA6B0075 for ; Sat, 22 Apr 2023 20:46:36 -0400 (EDT) Received: from smtpin28.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 1115AA01BC for ; Sun, 23 Apr 2023 00:46:36 +0000 (UTC) X-FDA: 80710815192.28.BE21F48 Received: from r3-20.sinamail.sina.com.cn (r3-20.sinamail.sina.com.cn [202.108.3.20]) by imf19.hostedemail.com (Postfix) with ESMTP id DCBB81A0006 for ; Sun, 23 Apr 2023 00:46:31 +0000 (UTC) Authentication-Results: imf19.hostedemail.com; dkim=none; spf=pass (imf19.hostedemail.com: domain of hdanton@sina.com designates 202.108.3.20 as permitted sender) smtp.mailfrom=hdanton@sina.com; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1682210794; 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=XoeTRmvEFu4oIUpJkHrDRdHBjVDTIGDj772yFOjidTU=; b=vNT5xt1QWQt7uzRsWLuNxfVzLpASNu7R4y4uMNfUx1NwCIlPKbLoA7whyGUc4ZRc/oFwYc pKV+AFp1EtnMJ/KHFaAvDC4zpZs2n6S/+g7Gp4dYnQ/d8HG3+C181SpKhBGkOvzfCgPC+O vcSh8r6xPlseqXn/fZ9mPBHOEp+g7fw= ARC-Authentication-Results: i=1; imf19.hostedemail.com; dkim=none; spf=pass (imf19.hostedemail.com: domain of hdanton@sina.com designates 202.108.3.20 as permitted sender) smtp.mailfrom=hdanton@sina.com; dmarc=none ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1682210794; a=rsa-sha256; cv=none; b=wb4f9s6RerP+3ppviYsqMqGcwQwgJepRUwAmukwSzekHQAgW9vohEasbD2Pk/L0vCdtItV 4QYfp+bwPEIY2cjxd/PgPUkkbmk/lbdiDCe8NoSw5et9LDNkuo63iHF5I0VOd05rDITwln OxeIbl5ESiJJxaNGJier5FV5VxGGP3o= X-SMAIL-HELO: localhost.localdomain Received: from unknown (HELO localhost.localdomain)([114.249.59.75]) by sina.com (172.16.97.35) with ESMTP id 64447F9600021B80; Sun, 23 Apr 2023 08:45:11 +0800 (CST) X-Sender: hdanton@sina.com X-Auth-ID: hdanton@sina.com X-SMAIL-MID: 75916915073434 From: Hillf Danton To: Lorenzo Stoakes Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, Andrew Morton , Jason Gunthorpe , Matthew Wilcox Subject: Re: [PATCH] mm/gup: disallow GUP writing to file-backed mappings by default Date: Sun, 23 Apr 2023 08:46:16 +0800 Message-Id: <20230423004616.1755-1-hdanton@sina.com> In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspam-User: X-Rspamd-Server: rspam03 X-Stat-Signature: 85xpzqwgcaeioh113ymywhjouqkqf6xe X-Rspamd-Queue-Id: DCBB81A0006 X-HE-Tag: 1682210791-467863 X-HE-Meta: U2FsdGVkX1+vpu9/m1Z+2j0idFVMJLB16tnWe/eA+wxPyti56IqhlE/EkHCiMDd27HNH8ovUAEKr6iTzQClsbQmBHlDjUKBdgTCJn0Pk0OAZkAxAysKnxi0Lx/7HLsaDPdlnVBvRfjrDy3DgCTJl8GExuHoE64jf+SDWhQJ/UVZiJnUwqWwwpqJT/ciRlU82QVN6licjLRVQMP4Y3hRMQ7j2YtsZkHe/0LIiUqC6GmBsz60WdPzlG2fB2WgIUEYoarJBZ91l5cd0JxWmBtcS5ynT/sdL9R80gSQmvBVRaeiiNiQMCX2guZJ+4df5z91GhUvgTsPMpgU/GOtncp4HeOoP7bGLgep5HmpQTWmgb6Y54VgxbqFnb7cE5IOZ5Qwkv40JdeD6WqKFp6p0cHwOtU1OUBvE1ZgdQiPf+3VUB2RJAgOfJ/WC4MkMh5Ze4P8GYDbhX8Jv4/savQpr38S3NTmT0H/UkfoMiq4Ck+bXDz5VbEQuMLtgED4qR0tI1VYsVgSU0Q+pyrfRbJbzGmYn7nt3xM2z8IXAOghjcxfftO2i8rk7xpe+jHdScoLxzVyBiy38iv8Fjgboe9z3XLq+LOu3Q3eECBjoTkVJg7o86vlAokqGo2QOMXZZcBiNAy3w/R8yN3DOVMPgZRTGOEOn70Avyh9O1fHZxtYIY3SNpGzltE/lh2sPvw4Cj4fTBU9lbPPHpD31HG3mpwHyp1dUredzJ8EYUl1ETiGGAsxHAwgWgbVx3RfCr2bA69J3HPL6DOLRwvsGDnW6Vklg3JJh18trZZGeXs3tUqqsFNBSV4rOSxH94nUohb7DwLI8XrhQy5PYkmRmxSRdSs8Ng5qji37rT59verKBYOVXMG4Bq9jABGA/sSB6deC8OjBAuqWHTgLf2tcKVEMVaG0SD2xcc8RKT725zxhjt9mZ8D1vD0km3VHAIiLF8+qXvThsUUIPG/YTFP25U4OpSSJmXCS v1n61fjK ZnoPUb/gBb/1xC/w+ovNz08NDvn2mXu2RtpDWbn+ZSEMyACW3k9HNRrjxR2L+xvhTP8Bs9PoAaNrx+ngtg3gAWSoxCri3sp0gBCp6 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: On 22 Apr 2023 14:37:05 +0100 Lorenzo Stoakes > @@ -110,7 +110,8 @@ int qib_get_user_pages(unsigned long start_page, size_t num_pages, > for (got = 0; got < num_pages; got += ret) { > ret = pin_user_pages(start_page + got * PAGE_SIZE, > num_pages - got, > - FOLL_LONGTERM | FOLL_WRITE, > + FOLL_LONGTERM | FOLL_WRITE | > + FOLL_ALLOW_BROKEN_FILE_MAPPING, > p + got, NULL); > if (ret < 0) { > mmap_read_unlock(current->mm); [...] > +/* > + * Writing to file-backed mappings using GUP is a fundamentally broken operation > + * as kernel write access to GUP mappings may not adhere to the semantics > + * expected by a file system. > + * > + * In most instances we disallow this broken behaviour, however there are some > + * exceptions to this enforced here. > + */ > +static inline bool can_write_file_mapping(struct vm_area_struct *vma, > + unsigned long gup_flags) > +{ > + struct file *file = vma->vm_file; > + > + /* If we aren't pinning then no problematic write can occur. */ > + if (!(gup_flags & (FOLL_GET | FOLL_PIN))) > + return true; > + > + /* Special mappings should pose no problem. */ > + if (!file) > + return true; > + > + /* Has the caller explicitly indicated this case is acceptable? */ > + if (gup_flags & FOLL_ALLOW_BROKEN_FILE_MAPPING) > + return true; Does the caller mean that PUP for DMA is no longer breaking writeback? > + > + /* shmem and hugetlb mappings do not have problematic semantics. */ > + return vma_is_shmem(vma) || is_file_hugepages(file); > +}