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 0B912C7EE22 for ; Mon, 15 May 2023 11:03:30 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 1F63E900003; Mon, 15 May 2023 07:03:30 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 1CD6D900002; Mon, 15 May 2023 07:03:30 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 0954B900003; Mon, 15 May 2023 07:03:30 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id ECBA7900002 for ; Mon, 15 May 2023 07:03:29 -0400 (EDT) Received: from smtpin11.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id B841BC1470 for ; Mon, 15 May 2023 11:03:29 +0000 (UTC) X-FDA: 80792203338.11.23B0083 Received: from wnew4-smtp.messagingengine.com (wnew4-smtp.messagingengine.com [64.147.123.18]) by imf12.hostedemail.com (Postfix) with ESMTP id 2FC774001D for ; Mon, 15 May 2023 11:03:25 +0000 (UTC) Authentication-Results: imf12.hostedemail.com; dkim=pass header.d=shutemov.name header.s=fm2 header.b="b eqhaz6"; dkim=pass header.d=messagingengine.com header.s=fm1 header.b=HCOKyUCG; dmarc=none; spf=pass (imf12.hostedemail.com: domain of kirill@shutemov.name designates 64.147.123.18 as permitted sender) smtp.mailfrom=kirill@shutemov.name ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1684148606; 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=a/Iydw3E9XYq6OMWXW3TvDHCSGXOvuQLC/4M2+8UgSg=; b=WYt21QBz+01peaItU2st2Nz+r2LdMGLtHKmo+PiWiN5vKhiwTH/qd8liXar/5B0bwlQ789 X7Sn2w8qM/npJbxwr1uG7snz95XBp1UXtdnrf2i4yzk0k5D4Yma82j8hGFW4X+Oea28kqw vadbyXyR9Myi5CAY8kDhikjeNxOkhGI= ARC-Authentication-Results: i=1; imf12.hostedemail.com; dkim=pass header.d=shutemov.name header.s=fm2 header.b="b eqhaz6"; dkim=pass header.d=messagingengine.com header.s=fm1 header.b=HCOKyUCG; dmarc=none; spf=pass (imf12.hostedemail.com: domain of kirill@shutemov.name designates 64.147.123.18 as permitted sender) smtp.mailfrom=kirill@shutemov.name ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1684148606; a=rsa-sha256; cv=none; b=BDFDvuzSeL2ocoazjO1Ly8cxQhowXoBXGePK2cjzDBPJlUhNqmYL3wWU0ehSnvO7tP3FLx DSyNsMI2cIsDAJUuFl6ZkXmxuX0hhtohfSakiNbX4L35FfI1d3AxFv/WT7UTtludV36z1M bf83lbEhJC6IVyecQxoqKLr1mvR6FQY= Received: from compute1.internal (compute1.nyi.internal [10.202.2.41]) by mailnew.west.internal (Postfix) with ESMTP id BF1CA2B05E55; Mon, 15 May 2023 07:03:20 -0400 (EDT) Received: from mailfrontend1 ([10.202.2.162]) by compute1.internal (MEProxy); Mon, 15 May 2023 07:03:24 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=shutemov.name; h=cc:cc:content-type:content-type:date:date:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:sender:subject:subject:to:to; s=fm2; t=1684148600; x= 1684155800; bh=a/Iydw3E9XYq6OMWXW3TvDHCSGXOvuQLC/4M2+8UgSg=; b=b eqhaz6+aC9XTJDJe/wr3N36+Tj3flpCfHvlOf9y8lXsK+262zaCij702Mejo2+QE Fd2xpeGSZ+xZXcy4D/O2ys6/yeyG+eg9pe7ttAK7rJ4flep8j0NnEuUu/JpgQ2zq +sQYGICk0DOSR7KXB1FGzWMBThhFGROaza2HF5WZTMoyXCpSoGrgyUpv2AwTVyoh MPRAEKadMnnI/sj+LbQEWvTyhwhvfq0KMSmbFHooxdpg4bZ6fN05mjKqs5p5+gMe sDKrBEwm+QstfKvMpg7xfToq9y+QHBotkJ9i3CoJB7tGWQC23VldSFyJYd2XEL4U Gl+2fihoHMbSTuxjVue1g== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-type:content-type:date:date :feedback-id:feedback-id:from:from:in-reply-to:in-reply-to :message-id:mime-version:references:reply-to:sender:subject :subject:to:to:x-me-proxy:x-me-proxy:x-me-sender:x-me-sender :x-sasl-enc; s=fm1; t=1684148600; x=1684155800; bh=a/Iydw3E9XYq6 OMWXW3TvDHCSGXOvuQLC/4M2+8UgSg=; b=HCOKyUCGguRFf1xsGM0olaZPpyE83 QUFg57fXwoOwyQLXQfBrzuMoGa6jxavNDy4hgO/KieahDInTa0sH3/uTA04n9PBd pOkNlIQsSrzizEIjBJ9OClefL/E9/wJWOs6W/BHwQZEkVPX/yhJWt9zeo1XJL8yO Dm7ChPssB/erg2Ti3ewsAZ+Qt8Pig5D5DcQN2IwE1zz0yI1+ld7eJeDoy/HbjJp8 Fwwn6gnv5N4GzwOjiaZb1+aSt2I9N4jbT6NnDxfZPC4PkwlZwKP41PP0oJSiwruW x9dW25YtqwNwMjBly/giIjtuqcpmWp+sz3+M1OpAnT7+WPfc354OTJLVA== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvhedrfeehjedgfeeiucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne cujfgurhepfffhvfevuffkfhggtggujgesthdttddttddtvdenucfhrhhomhepfdfmihhr ihhllhcutecurdcuufhhuhhtvghmohhvfdcuoehkihhrihhllhesshhhuhhtvghmohhvrd hnrghmvgeqnecuggftrfgrthhtvghrnhepgfdtveeugeethfffffeklefgkeelgfekfedt heeileetuefhkeefleduvddtkeevnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrg hmpehmrghilhhfrhhomhepkhhirhhilhhlsehshhhuthgvmhhovhdrnhgrmhgv X-ME-Proxy: Feedback-ID: ie3994620:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Mon, 15 May 2023 07:03:17 -0400 (EDT) Received: by box.shutemov.name (Postfix, from userid 1000) id 55AD0103956; Mon, 15 May 2023 14:03:15 +0300 (+03) Date: Mon, 15 May 2023 14:03:15 +0300 From: "Kirill A . Shutemov" To: Lorenzo Stoakes 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, Oleg Nesterov , Jason Gunthorpe , John Hubbard , Jan Kara , Pavel Begunkov , Mika Penttila , David Hildenbrand , Dave Chinner , Theodore Ts'o , Peter Xu , Matthew Rosato , "Paul E . McKenney" , Christian Borntraeger Subject: Re: [PATCH v9 0/3] mm/gup: disallow GUP writing to file-backed mappings by default Message-ID: <20230515110315.uqifqgqkzcrrrubv@box.shutemov.name> References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Stat-Signature: ct7mtccfcwfo1sbsuefeidgbweo8skrt X-Rspam-User: X-Rspamd-Queue-Id: 2FC774001D X-Rspamd-Server: rspam07 X-HE-Tag: 1684148605-926785 X-HE-Meta: U2FsdGVkX1+QVDavU06ko9er3Vh3PQgi5S8z7PQw+8C7XjiOPI/Z6QhWyFVmTuDBgwsFOlpK+CzgE4Zkl2Q+QhOW5uhhnXuocyplk2mObzeUxKCcoL0PFZydHAiP9aZCrQykconaVGEfw4I+JoPFzJATIWjK64xEd2nzQHx4jg43eftGoo/GIp8/E3B9YiXoBISrJqzWDO+/HBKXhRz5Zz5SlSX6j20RxOccw4SdA4gShPVYA6kyKBRFvU2UEucSa2Gsz2gMmpOpXSmX6vEF9ynNVNjvsHFtUGqUmqn/ilfNcUIJ332d/q6nBdWNjNA09TOKIHhhG/8NsxIAuYIKdqVR+wIg5MaBgywbwranPQwtMP7oRNjYALaaqNWBeNx6K5JH6DZaf0MW/bVHLWdOi+MnEaBDH6vLoW5vHFffTb3IhOSC6sOKmqvwIPVMvmQROttW4Mfnr/jkCwtmY8pRzQmB6M6bWKjHn3VkZbLNzyECnT8oPSMFUoSFl0mIEmt84XjiTGhd0KQ39eNS5w1IbyRjSidzMQVARWTMAevQ+U7AygSMg5XQFRuefuzL26vmnZMzGkhm02nHaK/cRuMPgbx+EtoxNMRxwve+eRflgOXRaouioqN5x26+IjOKaIPK3n6weespfA2pxaFx9s19PPzExbH07N7X9hyiQdtZCpqtrNVJA6ImrTZ6ODiOSrixoM9x9AADBxDcplnkTczEd4c2dIQdZ8A9NM7jKTriAbmfDf5qqYCm8gSo3paqw0+ltXMD5O0TMvLPMfpH33uGb1MYMFZnjdrFlnmtskUC9INnj5UdYG3AIWCG3OykNSLA6eTJcAsda09wZLiK9C96kCvgx6VJvHVz8hzrSpHQsHJCX9FsODMUVnt/v0RAofAPy6s28PN9TqOS3reToRHa3trTFmk3PiHIWaolQun+eDokSO/uTIA4n+RQaYCJDkt2Y7w7Gluc/1RPnDHEUMs rUF7jCtp KAGQx8gBGG2CQUCBsjQkTT8PVQim98GblwkzOH2d9PlM73x0x7X7/nVYXU3Ra3bhd9hF2MpdUcPhuJ99WxU4HanoDu2saf8OPIpasQ1QML1Ux8EKcSahq9PvyzQ5fWwV5wSlICAzL3rbISL0VDNOuCNulkpU9qaSBZI5WhzCZ2JdssO7uucoFXedRvAdTTXD2h8nyr+XAMwaxBGSH1IdrqfyiXdi7nRXDX5e8xuAeP1lwgervcCo47CLrdu2Im//Khzw/zJr8sEZtOJ1d0SgQR51JxZ1TmcgNe7vkTtaeauWgaeEgZOk/eLLFTbWtuWFWi8mrzJpM28k+884axg7cpYr49eVJZ+httljpDyL8hfmdHN0= 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 Thu, May 04, 2023 at 10:27:50PM +0100, Lorenzo Stoakes wrote: > Writing to file-backed mappings which require folio dirty tracking using > GUP is a fundamentally broken operation, as kernel write access to GUP > mappings do not adhere to the semantics expected by a file system. > > A GUP caller uses the direct mapping to access the folio, which does not > cause write notify to trigger, nor does it enforce that the caller marks > the folio dirty. Okay, problem is clear and the patchset look good to me. But I'm worried breaking existing users. Do we expect the change to be visible to real world users? If yes, are we okay to break them? One thing that came to mind is KVM with "qemu -object memory-backend-file,share=on..." It is mostly used for pmem emulation. Do we have plan B? Just a random/crazy/broken idea: - Allow folio_mkclean() (and folio_clear_dirty_for_io()) to fail, indicating that the page cannot be cleared because it is pinned; - Introduce a new vm_operations_struct::mkclean() that would be called by page_vma_mkclean_one() before clearing the range and can fail; - On GUP, create an in-kernel fake VMA that represents the file, but with custom vm_ops. The VMA registered in rmap to get notified on folio_mkclean() and fail it because of GUP. - folio_clear_dirty_for_io() callers will handle the new failure as indication that the page can be written back but will stay dirty and fs-specific data that is associated with the page writeback cannot be freed. I'm sure the idea is broken on many levels (I have never looked closely at the writeback path). But maybe it is good enough as conversation started? -- Kiryl Shutsemau / Kirill A. Shutemov