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 400B9C7618E for ; Mon, 24 Apr 2023 12:32:03 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id CB4436B0071; Mon, 24 Apr 2023 08:32:02 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id C622B6B0074; Mon, 24 Apr 2023 08:32:02 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id B2A286B0075; Mon, 24 Apr 2023 08:32:02 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id A1E5A6B0071 for ; Mon, 24 Apr 2023 08:32:02 -0400 (EDT) Received: from smtpin09.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id CB9B6160192 for ; Mon, 24 Apr 2023 12:32:01 +0000 (UTC) X-FDA: 80716221642.09.BE61871 Received: from mail-wm1-f53.google.com (mail-wm1-f53.google.com [209.85.128.53]) by imf02.hostedemail.com (Postfix) with ESMTP id EE4FA80009 for ; Mon, 24 Apr 2023 12:31:59 +0000 (UTC) Authentication-Results: imf02.hostedemail.com; dkim=pass header.d=gmail.com header.s=20221208 header.b=C5V0foNv; spf=pass (imf02.hostedemail.com: domain of lstoakes@gmail.com designates 209.85.128.53 as permitted sender) smtp.mailfrom=lstoakes@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1682339520; 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:dkim-signature; bh=E+9tG9/EzyZBijt6lC6jWfZSLjYD4vx+59W+aZZkyIo=; b=LrPPHgAMRbFFbD+pqhfvEs0Tey2a8ryU+1gfpPTN6PQMJ0PsR/M0B/BNIkvkliGtKQ4UTe h+zL+c1PeR6Z8QleseD71zHhodgPd1N25qvK07yP2CqQ6N+xMx+3p9X0QFTa9qMOlX309t z1o91Dvjx287tYcNuWWZeEOJSLB3M4U= ARC-Authentication-Results: i=1; imf02.hostedemail.com; dkim=pass header.d=gmail.com header.s=20221208 header.b=C5V0foNv; spf=pass (imf02.hostedemail.com: domain of lstoakes@gmail.com designates 209.85.128.53 as permitted sender) smtp.mailfrom=lstoakes@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1682339520; a=rsa-sha256; cv=none; b=8a4/O0vtMB15dLWgIcKrG2GNVFifgWLqPek9uMBBHYezjLTp9sgSqiGRteAsXvKd8tbk1c goApuyDQwHgn4h5c5HsgOdqaAQtVS47r2oAYZRXEKZu0dh3MwYH+O22xlUIJWUBHSsmLU+ q7JN3ggGPFPrOPriFf1Y9ajtnQKmetE= Received: by mail-wm1-f53.google.com with SMTP id 5b1f17b1804b1-3f173af665fso27800505e9.3 for ; Mon, 24 Apr 2023 05:31:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1682339518; x=1684931518; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=E+9tG9/EzyZBijt6lC6jWfZSLjYD4vx+59W+aZZkyIo=; b=C5V0foNvh3vz2bZmAcmn7rxPK1cb2LCMUj8MB0CyqWHsZ8tSTdIEXUKNViuB+5YuVW gPT5utMBxCLPTr+qlEsN3NcwQ4qVcIiTsPQ26yO47rL2gugChaazEsVzahUEh+Xybdfg rvx5oY//oi6zrdzS5n5xlQj0KZwFa9DJMB1zySKWAlXGuhE7LNOrth4eXEX3Befp6Hhk OfKDPv4jlt/uCh99yFEDJZ5sGYv6DuMYxu7DMURoQFzDXcCWy4y0XtJWRsANviCGso0h T7jpblG4VmcnMF2zDDEKYS0w9UswI4ubo/sK+DU3u0FAobS/sTrXO9JM26Kyrbt8LSZ9 bJlg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1682339518; x=1684931518; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=E+9tG9/EzyZBijt6lC6jWfZSLjYD4vx+59W+aZZkyIo=; b=BAcYpcfxao2EQmmK/74OACo38lS246muIg2ATx3hKkK0ruJ4yOEqtQivzWwu7QI8ji s2SEIpSjHCZniC1U1dWwMfqqggNKFXxuJbTJ4yUCUG+f7HUPQ8QNT+87YsPL95oCkWFM DLPVmuH3eSK5YtMVoRxkIGrt3BOO/SLAsr+tkEtR17srZe7XigE+puAIBE8GVS7R03y0 w8GoKZ8yptFETDRcBkvOCIl+uGlnwYTqVEgYUTNxtLkA4XtPeOpuLSuoCZt+CquR8xop tyKgofLl53i3yzQG7ZMKvHok6xD0uEW0Hifwc3FXbnTF2en43U3fj44k7Bh3zN0pwrRP HQfQ== X-Gm-Message-State: AAQBX9ef6vljyBll0PQg71/Bh6enU/QFzuhDDum0oY1qd7l3pQz1exgj 9WpUxJrVtQ/jVqe4Kbd2pNU= X-Google-Smtp-Source: AKy350aJGl3Ap51xHWyxEtalSo0tkfykfYvDkmohzXzrBI/PGmieCgcfIbaVFxVI6X2fWNblU2x2/A== X-Received: by 2002:a05:600c:21d7:b0:3f1:7a57:45cd with SMTP id x23-20020a05600c21d700b003f17a5745cdmr7792795wmj.28.1682339518121; Mon, 24 Apr 2023 05:31:58 -0700 (PDT) Received: from localhost (host86-156-84-164.range86-156.btcentralplus.com. [86.156.84.164]) by smtp.gmail.com with ESMTPSA id j32-20020a05600c1c2000b003f173987ec2sm15478354wms.22.2023.04.24.05.31.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 24 Apr 2023 05:31:57 -0700 (PDT) Date: Mon, 24 Apr 2023 13:31:56 +0100 From: Lorenzo Stoakes To: "Kirill A. Shutemov" Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, Andrew Morton , Jason Gunthorpe , Jens Axboe , Matthew Wilcox , Dennis Dalessandro , Leon Romanovsky , Christian Benvenuti , Nelson Escobar , Bernard Metzler , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Mark Rutland , Alexander Shishkin , Jiri Olsa , Namhyung Kim , Ian Rogers , Adrian Hunter , Bjorn Topel , Magnus Karlsson , Maciej Fijalkowski , Jonathan Lemon , "David S . Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Christian Brauner , Richard Cochran , Alexei Starovoitov , Daniel Borkmann , Jesper Dangaard Brouer , John Fastabend , linux-fsdevel@vger.kernel.org, linux-perf-users@vger.kernel.org, netdev@vger.kernel.org, bpf@vger.kernel.org Subject: Re: [PATCH] mm/gup: disallow GUP writing to file-backed mappings by default Message-ID: <3273f5f3-65d9-4366-9424-c688264992f9@lucifer.local> References: <20230424120247.k7cjmncmov32yv5r@box.shutemov.name> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20230424120247.k7cjmncmov32yv5r@box.shutemov.name> X-Rspamd-Queue-Id: EE4FA80009 X-Stat-Signature: kqnuba9w7xqhzid1u76irez9g1uqo8bc X-Rspam-User: X-Rspamd-Server: rspam08 X-HE-Tag: 1682339519-822060 X-HE-Meta: U2FsdGVkX181iMNqgDWN3i3/H4N8gnsmaYXbJaYP7WoZro8gYMLtWEpqzOBUwmU+27zem2ii6lKI/WtsBl8SkLZKjibc/UwQBBNbjuor7H/beauuZuInmi+7ndcw3xQV8dER5dxJhSt+GKdbtE+psyCKEUlpQSrJ7jet15rZR+W+zgElKs16PvQPBbYIOXFT8VQoYBiIbNtud1GMNkivtJwAkTAWr7xWaeYxPGjsXRpxVLIxGKHxZsXIR5IsC9KYI43vBpxbTAIUqVuMleQiR+bmoPKRNlCRFtQydOvdlHbHhbK3UUnfwpWa4QLsHDi/q/ht8mJfKcrfsFC+xicKzC6R0yfNz2GvzK6IdG1fBVssDMh2EEQHjWecxRTqXidmUgtzAXd/VV7HRaeWxUrlISB6RrWZl5sGBKEWDqIxAKyVQn0VYIOSSvg4FPXVtu1rT+6uumxMdg3fd/DVhy7mX8MS1fTLJi91qTcfc0MAbWIBaO9tJzPUvCWkxTMCs7gmWiEe4PvGvT9FfhcT0UIIUUCEe/GRaCAic/FrV53TJ0g99ytPo8lUEbL7y1ayRmhK3k9dmagQqUW8y0M6/Ip1UuIFIsTJue6JLMvhfcJBmkDfSxDpSdfaYMCGZT5wDe5d9dZBqO/ojb3qICYdOkkW26oUP84i0Q7Bw/nwizgm6IfqrTUrInrYnPxvZfKAMjSIFcQIkLuj7tl8i5vpK+kIAvXM8S3xoTbLN1EoVu0HCB3vx9s8jsHRt23LTsFuGEMxiOj3pYpaAPp8xFAoLVhsYjfLw7S9tZB2ANJBDgk1F0w9rFDTp4hHG4HDwpGWfpa5Va29Sd/Vcu6e96AZ3Zj0XJuXEXWyUoBA7AVzAOMLaT303RY51Yf+YR8wDNInezCZ+U5C5sAq/5zgBjX/YkMCDNrnsjN83avw1kSK6DL9nKu5SYdcho7f6eQoTnDU/KkkCYKTX+RlngwRDZmd/bU Q1CveKM9 +9WKjmLUOzOBiwCeZLH5YYvFdF3mIawmGVlVJFcShWscPrIz6ltiOUGqCiLAetYZiZnbEGOAfUW4KosM0NJ1XJtWYRPdfM4GmKng7NuxjCMToNiUd3qTra7UJQGBNyBGFU/C5N0z/zNn3u756GQVIzcSLxekvv3n7VtmqF7xZ1IG/HqtVgC2xiOJxjXN3tw+FNIavENEP4uX7GxLoFx6HpsJhLE11wIAi6u3lw6vxDSp1hXPWegovP+NDS+yTjdaRRi+ZZ7jd9axnpatdpqka+tK08lFQMIiPj6DPiKD3+dR4neLZASTGRqnpto1g49KlAlojLpbEBdvqOmG05GbcI5VZZ7N6Cun7qWAYLJtlzncUkiTPPyTP5KyiXniWCfuIuOYIAM81YDLTEBHGhL09hR+fPrlhG2s620oel94K4KUl+Vu1Z2OCm680jUleRBSN06eMxd2d7yTCwZE= 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 Mon, Apr 24, 2023 at 03:02:47PM +0300, Kirill A. Shutemov wrote: > On Sat, Apr 22, 2023 at 02:37:05PM +0100, Lorenzo Stoakes wrote: > > @@ -959,16 +959,46 @@ static int faultin_page(struct vm_area_struct *vma, > > return 0; > > } > > > > +/* > > + * 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; > > + > > + /* shmem and hugetlb mappings do not have problematic semantics. */ > > + return vma_is_shmem(vma) || is_file_hugepages(file); > > Can this be generalized to any fs that doesn't have vm_ops->page_mkwrite()? > Something more general would be preferable, however I believe there were concerns broader than write notify, for instance not correctly marking the folio dirty after writing to it, though arguably the caller should certainly be ensuring that (and in many cases, do). Jason will have more of a sense of this I think! > -- > Kiryl Shutsemau / Kirill A. Shutemov