On Sun, Oct 12, 2014 at 08:12:28PM +0100, Al Viro wrote: > 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... cool, Michal, if you're too busy lately, I can look at that one myself. I suppose the test application we have under tool/usb is good enough for validation ? cheers -- balbi
Attachment:
signature.asc
Description: Digital signature