diff options
Diffstat (limited to 'include/linux/uio.h')
-rw-r--r-- | include/linux/uio.h | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/include/linux/uio.h b/include/linux/uio.h index e67e12adb136..f5766e853a77 100644 --- a/include/linux/uio.h +++ b/include/linux/uio.h | |||
@@ -154,6 +154,12 @@ size_t _copy_from_iter_flushcache(void *addr, size_t bytes, struct iov_iter *i); | |||
154 | #define _copy_from_iter_flushcache _copy_from_iter_nocache | 154 | #define _copy_from_iter_flushcache _copy_from_iter_nocache |
155 | #endif | 155 | #endif |
156 | 156 | ||
157 | #ifdef CONFIG_ARCH_HAS_UACCESS_MCSAFE | ||
158 | size_t _copy_to_iter_mcsafe(void *addr, size_t bytes, struct iov_iter *i); | ||
159 | #else | ||
160 | #define _copy_to_iter_mcsafe _copy_to_iter | ||
161 | #endif | ||
162 | |||
157 | static __always_inline __must_check | 163 | static __always_inline __must_check |
158 | size_t copy_from_iter_flushcache(void *addr, size_t bytes, struct iov_iter *i) | 164 | size_t copy_from_iter_flushcache(void *addr, size_t bytes, struct iov_iter *i) |
159 | { | 165 | { |
@@ -163,6 +169,15 @@ size_t copy_from_iter_flushcache(void *addr, size_t bytes, struct iov_iter *i) | |||
163 | return _copy_from_iter_flushcache(addr, bytes, i); | 169 | return _copy_from_iter_flushcache(addr, bytes, i); |
164 | } | 170 | } |
165 | 171 | ||
172 | static __always_inline __must_check | ||
173 | size_t copy_to_iter_mcsafe(void *addr, size_t bytes, struct iov_iter *i) | ||
174 | { | ||
175 | if (unlikely(!check_copy_size(addr, bytes, false))) | ||
176 | return 0; | ||
177 | else | ||
178 | return _copy_to_iter_mcsafe(addr, bytes, i); | ||
179 | } | ||
180 | |||
166 | size_t iov_iter_zero(size_t bytes, struct iov_iter *); | 181 | size_t iov_iter_zero(size_t bytes, struct iov_iter *); |
167 | unsigned long iov_iter_alignment(const struct iov_iter *i); | 182 | unsigned long iov_iter_alignment(const struct iov_iter *i); |
168 | unsigned long iov_iter_gap_alignment(const struct iov_iter *i); | 183 | unsigned long iov_iter_gap_alignment(const struct iov_iter *i); |