Al Viro <viro@xxxxxxxxxxxxxxxxxx> wrote: > My main problem here is that your iterate_mapping() assumes that STEP is > safe under rcu_read_lock(), with no visible mentioning of that fact. Yeah, that's probably the biggest objection to this. > Note, BTW, that iov_iter_for_each_range() quietly calls user-supplied > callback in such context. And calls kmap(), but should probably use kmap_atomic(). git grep doesn't show any users of this, so can it be removed? > Incidentally, do you ever have different steps for bvec and mapping? Yes: csum_and_copy_from_iter_full() iov_iter_npages() iov_iter_get_pages() iov_iter_get_pages_alloc() But I've tried to use the internal representation struct for bvec where I can rather than inventing a new one. David