From: Anand Jain <anand.jain@oracle.com>
To: stable@vger.kernel.org
Cc: linux-btrfs@vger.kernel.org, Anand Jain <anand.jain@oracle.com>
Subject: [PATCH v3 00/18 stable-5.15.y] Fix mmap + page fault deadlocks
Date: Fri, 15 Apr 2022 06:28:38 +0800 [thread overview]
Message-ID: <cover.1649951733.git.anand.jain@oracle.com> (raw)
v3:
Fix the patch order and fix the missing symbol compile error when compiled
after each patch is applied.
v2:
Rebase on the latest stable-5.15.33.
Adds the following commits to the v1 patchset as they fix issues in the
merged commit.
ca93e44bfb5f btrfs: fallback to blocking mode when doing async dio over multiple extents
fe673d3f5bf1 mm: gup: make fault_in_safe_writeable() use fixup_user_fault()
And this set drops the following patch as it is already in the
stable-5.15.y.
[PATCH 01/17 stable-5.15.y] powerpc/kvm: Fix kvm_use_magic_page
------- original cover letter --------
This set fixes a process hang issue in btrfs and gf2 filesystems. When we
do a direct IO read or write when the buffer given by the user is
memory-mapped to the file range we are going to do IO, we end up ending
in a deadlock. This is triggered by the test case generic/647 from
fstests.
This fix depends on the iov_iter and iomap changes introduced in the
commit c03098d4b9ad ("Merge tag 'gfs2-v5.15-rc5-mmap-fault' of
git://git.kernel.org/pub/scm/linux/kernel/git/gfs2/linux-gfs2") and they
are part of this set for stable-5.15.y.
Please note that patch 2/18 (in v2) (was 3/17 in v1) in the patchset
changes the prototype and renames an exported symbol as below. All its
references are updated as well.
-EXPORT_SYMBOL(iov_iter_fault_in_readable);
+EXPORT_SYMBOL(fault_in_iov_iter_readable);
Andreas Gruenbacher (14):
gup: Turn fault_in_pages_{readable,writeable} into
fault_in_{readable,writeable}
iov_iter: Turn iov_iter_fault_in_readable into
fault_in_iov_iter_readable
iov_iter: Introduce fault_in_iov_iter_writeable
gfs2: Add wrapper for iomap_file_buffered_write
gfs2: Clean up function may_grant
gfs2: Move the inode glock locking to gfs2_file_buffered_write
gfs2: Eliminate ip->i_gh
gfs2: Fix mmap + page fault deadlocks for buffered I/O
iomap: Fix iomap_dio_rw return value for user copies
iomap: Support partial direct I/O on user copy failures
iomap: Add done_before argument to iomap_dio_rw
gup: Introduce FOLL_NOFAULT flag to disable page faults
iov_iter: Introduce nofault flag to disable page faults
gfs2: Fix mmap + page fault deadlocks for direct I/O
Bob Peterson (1):
gfs2: Introduce flag for glock holder auto-demotion
Filipe Manana (2):
btrfs: fix deadlock due to page faults during direct IO reads and
writes
btrfs: fallback to blocking mode when doing async dio over multiple
extents
Linus Torvalds (1):
mm: gup: make fault_in_safe_writeable() use fixup_user_fault()
arch/powerpc/kernel/kvm.c | 3 +-
arch/powerpc/kernel/signal_32.c | 4 +-
arch/powerpc/kernel/signal_64.c | 2 +-
arch/x86/kernel/fpu/signal.c | 7 +-
drivers/gpu/drm/armada/armada_gem.c | 7 +-
fs/btrfs/file.c | 142 ++++++++++--
fs/btrfs/inode.c | 28 +++
fs/btrfs/ioctl.c | 5 +-
fs/erofs/data.c | 2 +-
fs/ext4/file.c | 5 +-
fs/f2fs/file.c | 2 +-
fs/fuse/file.c | 2 +-
fs/gfs2/bmap.c | 60 +----
fs/gfs2/file.c | 252 +++++++++++++++++++--
fs/gfs2/glock.c | 330 +++++++++++++++++++++-------
fs/gfs2/glock.h | 20 ++
fs/gfs2/incore.h | 4 +-
fs/iomap/buffered-io.c | 2 +-
fs/iomap/direct-io.c | 29 ++-
fs/ntfs/file.c | 2 +-
fs/ntfs3/file.c | 2 +-
fs/xfs/xfs_file.c | 6 +-
fs/zonefs/super.c | 4 +-
include/linux/iomap.h | 11 +-
include/linux/mm.h | 3 +-
include/linux/pagemap.h | 58 +----
include/linux/uio.h | 4 +-
lib/iov_iter.c | 98 +++++++--
mm/filemap.c | 4 +-
mm/gup.c | 120 +++++++++-
30 files changed, 920 insertions(+), 298 deletions(-)
--
2.33.1
next reply other threads:[~2022-04-14 22:29 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-04-14 22:28 Anand Jain [this message]
2022-04-14 22:28 ` [PATCH v3 01/18 stable-5.15.y] gup: Turn fault_in_pages_{readable,writeable} into fault_in_{readable,writeable} Anand Jain
2022-04-14 22:28 ` [PATCH v3 02/18 stable-5.15.y] iov_iter: Turn iov_iter_fault_in_readable into fault_in_iov_iter_readable Anand Jain
2022-04-14 22:28 ` [PATCH v3 03/18 stable-5.15.y] iov_iter: Introduce fault_in_iov_iter_writeable Anand Jain
2022-04-14 22:28 ` [PATCH v3 04/18 stable-5.15.y] gfs2: Add wrapper for iomap_file_buffered_write Anand Jain
2022-04-14 22:28 ` [PATCH v3 05/18 stable-5.15.y] gfs2: Clean up function may_grant Anand Jain
2022-04-14 22:28 ` [PATCH v3 06/18 stable-5.15.y] gfs2: Introduce flag for glock holder auto-demotion Anand Jain
2022-04-14 22:28 ` [PATCH v3 07/18 stable-5.15.y] gfs2: Move the inode glock locking to gfs2_file_buffered_write Anand Jain
2022-04-14 22:28 ` [PATCH v3 08/18 stable-5.15.y] gfs2: Eliminate ip->i_gh Anand Jain
2022-04-14 22:28 ` [PATCH v3 09/18 stable-5.15.y] gfs2: Fix mmap + page fault deadlocks for buffered I/O Anand Jain
2022-04-14 22:28 ` [PATCH v3 10/18 stable-5.15.y] iomap: Fix iomap_dio_rw return value for user copies Anand Jain
2022-04-14 22:28 ` [PATCH v3 11/18 stable-5.15.y] iomap: Support partial direct I/O on user copy failures Anand Jain
2022-04-14 22:28 ` [PATCH v3 12/18 stable-5.15.y] iomap: Add done_before argument to iomap_dio_rw Anand Jain
2022-04-14 22:28 ` [PATCH v3 13/18 stable-5.15.y] gup: Introduce FOLL_NOFAULT flag to disable page faults Anand Jain
2022-04-14 22:28 ` [PATCH v3 14/18 stable-5.15.y] iov_iter: Introduce nofault " Anand Jain
2022-04-14 22:28 ` [PATCH v3 15/18 stable-5.15.y] gfs2: Fix mmap + page fault deadlocks for direct I/O Anand Jain
2022-04-14 22:28 ` [PATCH v3 16/18 stable-5.15.y] btrfs: fix deadlock due to page faults during direct IO reads and writes Anand Jain
2022-04-14 22:28 ` [PATCH v3 17/18 stable-5.15.y] btrfs: fallback to blocking mode when doing async dio over multiple extents Anand Jain
2022-04-14 22:28 ` [PATCH v3 18/18 stable-5.15.y] mm: gup: make fault_in_safe_writeable() use fixup_user_fault() Anand Jain
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=cover.1649951733.git.anand.jain@oracle.com \
--to=anand.jain@oracle.com \
--cc=linux-btrfs@vger.kernel.org \
--cc=stable@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.