summaryrefslogtreecommitdiff
path: root/fs/read_write.c
diff options
context:
space:
mode:
authorJens Axboe <axboe@kernel.dk>2023-03-29 09:16:45 -0600
committerJens Axboe <axboe@kernel.dk>2023-03-30 08:12:29 -0600
commit95e49cf8373a0a4d1ec85f0512080bb4f945df74 (patch)
treea4fb24a611ed5d3357a785dc7f561981d379a620 /fs/read_write.c
parente4d3202c18329ba2733c9e04489b6ef05d3bce08 (diff)
downloadlwn-95e49cf8373a0a4d1ec85f0512080bb4f945df74.tar.gz
lwn-95e49cf8373a0a4d1ec85f0512080bb4f945df74.zip
iov_iter: add iter_iov_addr() and iter_iov_len() helpers
These just return the address and length of the current iovec segment in the iterator. Convert existing iov_iter_iovec() users to use them instead of getting a copy of the current vec. Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'fs/read_write.c')
-rw-r--r--fs/read_write.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/fs/read_write.c b/fs/read_write.c
index 7a2ff6157eda..a21ba3be7dbe 100644
--- a/fs/read_write.c
+++ b/fs/read_write.c
@@ -749,15 +749,14 @@ static ssize_t do_loop_readv_writev(struct file *filp, struct iov_iter *iter,
return -EOPNOTSUPP;
while (iov_iter_count(iter)) {
- struct iovec iovec = iov_iter_iovec(iter);
ssize_t nr;
if (type == READ) {
- nr = filp->f_op->read(filp, iovec.iov_base,
- iovec.iov_len, ppos);
+ nr = filp->f_op->read(filp, iter_iov_addr(iter),
+ iter_iov_len(iter), ppos);
} else {
- nr = filp->f_op->write(filp, iovec.iov_base,
- iovec.iov_len, ppos);
+ nr = filp->f_op->write(filp, iter_iov_addr(iter),
+ iter_iov_len(iter), ppos);
}
if (nr < 0) {
@@ -766,7 +765,7 @@ static ssize_t do_loop_readv_writev(struct file *filp, struct iov_iter *iter,
break;
}
ret += nr;
- if (nr != iovec.iov_len)
+ if (nr != iter_iov_len(iter))
break;
iov_iter_advance(iter, nr);
}