On Wed, Oct 08, 2014 at 02:12:18PM -0700, David Cohen wrote: > use_mm(io_data->mm); > for (i = 0; i < io_data->nr_segs; i++) { > + size_t len = min_t(size_t, ret - pos, > + io_data->iovec[i].iov_len); > + if (!len) > + break; > if (unlikely(copy_to_user(io_data->iovec[i].iov_base, > - &io_data->buf[pos], > - io_data->iovec[i].iov_len))) { > + &io_data->buf[pos], len))) { > ret = -EFAULT; > break; > } > - pos += io_data->iovec[i].iov_len; > + pos += len; Hmm... This is really asking for something like if (copy_to_iter(io_data->buf, ret, <something>) != ret) ret = -EFAULT; with <something> being an iov_iter instead of iovec. It would be really nice to have that thing switched to ->read_iter/->write_iter, dropping ->read/->write/->aio_read/->aio_write; I'm not familiar enough with that code to do it on my own, though, so it would require some help from maintainers... -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html