diff options
| author | Jens Axboe <axboe@kernel.dk> | 2024-04-09 11:15:02 -0600 |
|---|---|---|
| committer | Jens Axboe <axboe@kernel.dk> | 2024-04-09 11:15:02 -0600 |
| commit | 1f65f52d131ad92fda8a025f7d670e7a1a42a187 (patch) | |
| tree | 94db6a91932dfb958afa95fe597e9df02b87a2f1 /include/linux | |
| parent | fec50db7033ea478773b159e0e2efb135270e3b7 (diff) | |
| parent | e82051193a171f393d2a165a7ce18d8a2e2b4837 (diff) | |
Merge branch 'work.iov_iter' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs into read_iter
* 'work.iov_iter' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
new helper: copy_to_iter_full()
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/uio.h | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/include/linux/uio.h b/include/linux/uio.h index 00cebe2b70de..7020adedfa08 100644 --- a/include/linux/uio.h +++ b/include/linux/uio.h @@ -206,6 +206,16 @@ size_t copy_from_iter(void *addr, size_t bytes, struct iov_iter *i) } static __always_inline __must_check +bool copy_to_iter_full(const void *addr, size_t bytes, struct iov_iter *i) +{ + size_t copied = copy_to_iter(addr, bytes, i); + if (likely(copied == bytes)) + return true; + iov_iter_revert(i, copied); + return false; +} + +static __always_inline __must_check bool copy_from_iter_full(void *addr, size_t bytes, struct iov_iter *i) { size_t copied = copy_from_iter(addr, bytes, i); |
