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 X-Spam-Level: X-Spam-Status: No, score=-17.3 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,MENTIONS_GIT_HOSTING,SPF_HELO_NONE,SPF_PASS, USER_AGENT_SANE_1 autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 7B38DC4320A for ; Wed, 25 Aug 2021 14:51:23 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 06422610A1 for ; Wed, 25 Aug 2021 14:51:23 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 06422610A1 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=suse.cz Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=kvack.org Received: by kanga.kvack.org (Postfix) id 9E0368D0002; Wed, 25 Aug 2021 10:51:22 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 991148D0001; Wed, 25 Aug 2021 10:51:22 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 87F848D0002; Wed, 25 Aug 2021 10:51:22 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0022.hostedemail.com [216.40.44.22]) by kanga.kvack.org (Postfix) with ESMTP id 6F5ED8D0001 for ; Wed, 25 Aug 2021 10:51:22 -0400 (EDT) Received: from smtpin10.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay01.hostedemail.com (Postfix) with ESMTP id 13FAC182751BB for ; Wed, 25 Aug 2021 14:51:22 +0000 (UTC) X-FDA: 78513891204.10.59D66F6 Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.220.28]) by imf07.hostedemail.com (Postfix) with ESMTP id 8112610000AB for ; Wed, 25 Aug 2021 14:51:21 +0000 (UTC) Received: from relay2.suse.de (relay2.suse.de [149.44.160.134]) by smtp-out1.suse.de (Postfix) with ESMTP id 0A4B6221AC; Wed, 25 Aug 2021 14:51:20 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_rsa; t=1629903080; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type; bh=1rfeu5XqjPTLABqiy/j9mv/BEeYC8r3HQXxDWyjF7ME=; b=j6UE+xchwkOMrbRyWdTHaD0UOhHPnrS6pVnznBsZNZFeErWc7DP6zqG5o6Gc96fj/IJdXR LXuzfFMsFPvgt41dzFtebQg6f/sNqkpZuMnH5bGFrLFS1ZhX7jvlJFnLadNZK+0n3dA9CB F0WlMbhc8Q9SCQmd0YECDWb3L8DNEhQ= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_ed25519; t=1629903080; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type; bh=1rfeu5XqjPTLABqiy/j9mv/BEeYC8r3HQXxDWyjF7ME=; b=BgbUpcFALedeh92YIotcpcqb9dooaSEYtCfQoixbLfm9GeoLj+/YCPeQN12F3TL4rcYCAR w3it53yQKdbRQuDA== Received: from quack2.suse.cz (unknown [10.100.224.230]) by relay2.suse.de (Postfix) with ESMTP id E99E9A3B87; Wed, 25 Aug 2021 14:51:19 +0000 (UTC) Received: by quack2.suse.cz (Postfix, from userid 1000) id 80B301F2BA4; Wed, 25 Aug 2021 16:51:18 +0200 (CEST) Date: Wed, 25 Aug 2021 16:51:18 +0200 From: Jan Kara To: Linus Torvalds Cc: linux-fsdevel@vger.kernel.org, linux-mm@kvack.org Subject: [GIT PULL] Hole punch vs page cache filling races fixes for 5.15-rc1 Message-ID: <20210825145118.GI14620@quack2.suse.cz> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.10.1 (2018-07-13) Authentication-Results: imf07.hostedemail.com; dkim=pass header.d=suse.cz header.s=susede2_rsa header.b=j6UE+xch; dkim=pass header.d=suse.cz header.s=susede2_ed25519 header.b=BgbUpcFA; dmarc=none; spf=pass (imf07.hostedemail.com: domain of jack@suse.cz designates 195.135.220.28 as permitted sender) smtp.mailfrom=jack@suse.cz X-Rspamd-Server: rspam03 X-Rspamd-Queue-Id: 8112610000AB X-Stat-Signature: zmu6ehyky68c94fg9tqkjk6amrhgrhkw X-HE-Tag: 1629903081-803056 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: Hello Linus, this is the last early pull request for the coming merge window. Could you please pull from git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs.git hole_punch_for_v5.15-rc1 to get patches that fix races leading to possible data corruption or stale data exposure in multiple filesystems when hole punching races with operations such as readahead. This is the series I was sending for the last merge window but with your objection fixed - now filemap_fault() has been modified to take invalidate_lock only when we need to create new page in the page cache and / or bring it uptodate (see updated commit 730633f0b7f "mm: Protect operations adding pages to page cache with invalidate_lock"). There are some conflicts of this series with changes in f2fs and folio trees. The resolution is mostly obvious but I've pushed out suggested merge (taken from Stephen Rothwell) to: git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs.git hole_punch_fixes_merge Top of the tree is 7882c55ef64a. The full shortlog is: Jan Kara (13): mm: Fix comments mentioning i_mutex documentation: Sync file_operations members with reality mm: Protect operations adding pages to page cache with invalidate_lock mm: Add functions to lock invalidate_lock for two mappings ext4: Convert to use mapping->invalidate_lock ext2: Convert to using invalidate_lock xfs: Convert to use invalidate_lock xfs: Convert double locking of MMAPLOCK to use VFS helpers zonefs: Convert to using invalidate_lock f2fs: Convert to using invalidate_lock fuse: Convert to using invalidate_lock ceph: Fix race between hole punch and page fault cifs: Fix race between hole punch and page fault Pavel Reichl (1): xfs: Refactor xfs_isilocked() Randy Dunlap (1): filesystems/locking: fix Malformed table warning The diffstat is Documentation/filesystems/locking.rst | 79 ++++++++++++------ fs/ceph/addr.c | 9 ++- fs/ceph/file.c | 2 + fs/cifs/smb2ops.c | 2 + fs/ext2/ext2.h | 11 --- fs/ext2/file.c | 7 +- fs/ext2/inode.c | 12 +-- fs/ext2/super.c | 3 - fs/ext4/ext4.h | 10 --- fs/ext4/extents.c | 25 +++--- fs/ext4/file.c | 13 +-- fs/ext4/inode.c | 47 ++++------- fs/ext4/ioctl.c | 4 +- fs/ext4/super.c | 13 ++- fs/ext4/truncate.h | 8 +- fs/f2fs/data.c | 8 +- fs/f2fs/f2fs.h | 1 - fs/f2fs/file.c | 62 +++++++-------- fs/f2fs/super.c | 1 - fs/fuse/dax.c | 50 ++++++------ fs/fuse/dir.c | 11 +-- fs/fuse/file.c | 10 +-- fs/fuse/fuse_i.h | 7 -- fs/fuse/inode.c | 1 - fs/inode.c | 2 + fs/xfs/xfs_bmap_util.c | 15 ++-- fs/xfs/xfs_file.c | 13 +-- fs/xfs/xfs_inode.c | 121 ++++++++++++++-------------- fs/xfs/xfs_inode.h | 3 +- fs/xfs/xfs_super.c | 2 - fs/zonefs/super.c | 23 ++---- fs/zonefs/zonefs.h | 7 +- include/linux/fs.h | 39 +++++++++ mm/filemap.c | 145 ++++++++++++++++++++++++++++------ mm/madvise.c | 2 +- mm/memory-failure.c | 2 +- mm/readahead.c | 2 + mm/rmap.c | 41 +++++----- mm/shmem.c | 20 ++--- mm/truncate.c | 9 ++- 40 files changed, 482 insertions(+), 360 deletions(-) Thanks Honza -- Jan Kara SUSE Labs, CR