On Thu, Jan 26, 2023 at 02:16:20PM +0000, David Howells wrote: > +/** > + * iov_iter_extract_will_pin - Indicate how pages from the iterator will be retained > + * @iter: The iterator > + * > + * Examine the iterator and indicate by returning true or false as to how, if > + * at all, pages extracted from the iterator will be retained by the extraction > + * function. > + * > + * %true indicates that the pages will have a pin placed in them that the > + * caller must unpin. This is must be done for DMA/async DIO to force fork() > + * to forcibly copy a page for the child (the parent must retain the original > + * page). > + * > + * %false indicates that no measures are taken and that it's up to the caller > + * to retain the pages. > + */ > +static inline bool iov_iter_extract_will_pin(const struct iov_iter *iter) > +{ > + return user_backed_iter(iter); > +} > + Wait a sec; why would we want a pin for pages we won't be modifying? A reference - sure, but...