]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
block: respect iov_iter::nofault flag in bio_iov_iter_bounce_write()
authorQu Wenruo <wqu@suse.com>
Tue, 16 Jun 2026 08:12:36 +0000 (17:42 +0930)
committerJens Axboe <axboe@kernel.dk>
Tue, 16 Jun 2026 20:48:35 +0000 (14:48 -0600)
commitd5b58fbb2fd7ac25fcd7e1c14730f998a90b0322
treef5a039aeff1113781001663a695c21aa91d19fed
parentb68d4979c88e31488970373f67ac79b4f6267008
block: respect iov_iter::nofault flag in bio_iov_iter_bounce_write()

For the incoming usage of IOMAP_DIO_BOUNCE in btrfs, btrfs has set
iov_iter::nofault to prevent deadlock when a page fault is needed to
read out the buffer.

However bio_iov_iter_bounce_write() doesn't respect iov_iter::nofault
flag, and just call a plain copy_from_iter() so it can still trigger
page fault and cause deadlock in btrfs.

Fix it by utilizing copy_folio_from_iter_atomic() if nofault flag is
set, otherwise use copy_folio_from_iter().

Signed-off-by: Qu Wenruo <wqu@suse.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Link: https://patch.msgid.link/9c165a314022b61566eb247852eb773ca6c70889.1781597506.git.wqu@suse.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
block/bio.c