Lines Matching refs:iov
31 struct iovec *iov, struct page **last_hpage);
99 static int io_buffer_validate(struct iovec *iov)
106 if (!iov->iov_base)
107 return iov->iov_len ? -EFAULT : 0;
109 return io_validate_user_buf_range((unsigned long)iov->iov_base,
110 iov->iov_len);
296 struct iovec fast_iov, *iov;
313 iov = iovec_from_user(uvec, 1, 1, &fast_iov, ctx->compat);
314 if (IS_ERR(iov)) {
315 err = PTR_ERR(iov);
322 err = io_buffer_validate(iov);
325 node = io_sqe_buffer_register(ctx, iov, &last_hpage);
781 struct iovec *iov,
793 if (!iov->iov_base)
801 pages = io_pin_pages((unsigned long) iov->iov_base, iov->iov_len,
824 size = iov->iov_len;
826 imu->ubuf = (unsigned long) iov->iov_base;
827 imu->len = iov->iov_len;
837 off = (unsigned long)iov->iov_base & ~PAGE_MASK;
872 struct iovec fast_iov, *iov = &fast_iov;
887 memset(iov, 0, sizeof(*iov));
895 iov = iovec_from_user(uvec, 1, 1, &fast_iov, ctx->compat);
896 if (IS_ERR(iov)) {
897 ret = PTR_ERR(iov);
900 ret = io_buffer_validate(iov);
916 node = io_sqe_buffer_register(ctx, iov, &last_hpage);
1333 struct iovec *iov;
1335 iov = kmalloc_array(nr_entries, sizeof(iov[0]), gfp);
1336 if (!iov)
1340 iv->iovec = iov;
1399 static int io_estimate_bvec_size(struct iovec *iov, unsigned nr_iovs,
1407 max_segs += (iov[i].iov_len >> shift) + 2;
1442 static int iov_kern_bvec_size(const struct iovec *iov,
1446 size_t offset = (size_t)(uintptr_t)iov->iov_base;
1452 ret = validate_fixed_range(offset, iov->iov_len, imu);
1456 for (i = 0; off < offset + iov->iov_len && i < imu->nr_bvecs;
1465 static int io_kern_bvec_size(struct iovec *iov, unsigned nr_iovs,
1475 if (unlikely(!iov[i].iov_len))
1477 if (unlikely(check_add_overflow(total_len, iov[i].iov_len,
1480 ret = iov_kern_bvec_size(&iov[i], imu, &max_segs);
1497 struct iovec *iov;
1508 iov = vec->iovec + iovec_off;
1511 int ret = io_kern_bvec_size(iov, nr_iovs, imu, &nr_segs);
1516 int ret = io_estimate_bvec_size(iov, nr_iovs, imu);
1527 nr_segs = (bvec_bytes + sizeof(*iov) - 1) / sizeof(*iov);
1540 memcpy(tmp_vec.iovec + iovec_off, iov, sizeof(*iov) * nr_iovs);
1544 iov = vec->iovec + iovec_off;
1549 return io_vec_fill_kern_bvec(ddir, iter, imu, iov, nr_iovs, vec);
1551 return io_vec_fill_bvec(ddir, iter, imu, iov, nr_iovs, vec);
1557 struct iovec *iov;
1570 iov = iv->iovec + iovec_off;
1571 res = iovec_from_user(uvec, uvec_segs, uvec_segs, iov,