aboutsummaryrefslogtreecommitdiff
path: root/crypto/fcrypt.c
diff options
context:
space:
mode:
authorGravatar David Howells <dhowells@redhat.com> 2022-10-28 21:50:30 +0100
committerGravatar Steve French <stfrench@microsoft.com> 2023-02-20 17:25:43 -0600
commit7d58fe731028128f3a7e20b9c492be48aae133ee (patch)
tree7c5e39d8e329ad2e87114d83e499cd91de5c8f20 /crypto/fcrypt.c
parentiov_iter: Define flags to qualify page extraction. (diff)
downloadlinux-7d58fe731028128f3a7e20b9c492be48aae133ee.tar.gz
linux-7d58fe731028128f3a7e20b9c492be48aae133ee.tar.bz2
linux-7d58fe731028128f3a7e20b9c492be48aae133ee.zip
iov_iter: Add a function to extract a page list from an iterator
Add a function, iov_iter_extract_pages(), to extract a list of pages from an iterator. The pages may be returned with a pin added or nothing, depending on the type of iterator. Add a second function, iov_iter_extract_will_pin(), to determine how the cleanup should be done. There are two cases: (1) ITER_IOVEC or ITER_UBUF iterator. Extracted pages will have pins (FOLL_PIN) obtained on them so that a concurrent fork() will forcibly copy the page so that DMA is done to/from the parent's buffer and is unavailable to/unaffected by the child process. iov_iter_extract_will_pin() will return true for this case. The caller should use something like unpin_user_page() to dispose of the page. (2) Any other sort of iterator. No refs or pins are obtained on the page, the assumption is made that the caller will manage page retention. iov_iter_extract_will_pin() will return false. The pages don't need additional disposal. Signed-off-by: David Howells <dhowells@redhat.com> Reviewed-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Jens Axboe <axboe@kernel.dk> cc: Al Viro <viro@zeniv.linux.org.uk> cc: John Hubbard <jhubbard@nvidia.com> cc: David Hildenbrand <david@redhat.com> cc: Matthew Wilcox <willy@infradead.org> cc: linux-fsdevel@vger.kernel.org cc: linux-mm@kvack.org Signed-off-by: Steve French <stfrench@microsoft.com>
Diffstat (limited to 'crypto/fcrypt.c')
0 files changed, 0 insertions, 0 deletions