return __skb_put_padto(skb, len, true);
 }
 
-struct csum_state {
-       __wsum csum;
-       size_t off;
-};
-
-size_t csum_and_copy_from_iter(void *addr, size_t bytes, __wsum *csum, struct iov_iter *i);
-
-static __always_inline __must_check
-bool csum_and_copy_from_iter_full(void *addr, size_t bytes,
-                                 __wsum *csum, struct iov_iter *i)
-{
-       size_t copied = csum_and_copy_from_iter(addr, bytes, csum, i);
-       if (likely(copied == bytes))
-               return true;
-       iov_iter_revert(i, copied);
-       return false;
-}
+bool csum_and_copy_from_iter_full(void *addr, size_t bytes, __wsum *csum, struct iov_iter *i)
+       __must_check;
 
 static inline int skb_add_data(struct sk_buff *skb,
                               struct iov_iter *from, int copy)
 
        return next ? 0 : len;
 }
 
-size_t csum_and_copy_from_iter(void *addr, size_t bytes, __wsum *csum,
-                              struct iov_iter *i)
+bool csum_and_copy_from_iter_full(void *addr, size_t bytes,
+                                 __wsum *csum, struct iov_iter *i)
 {
+       size_t copied;
+
        if (WARN_ON_ONCE(!i->data_source))
-               return 0;
-       return iterate_and_advance2(i, bytes, addr, csum,
-                                   copy_from_user_iter_csum,
-                                   memcpy_from_iter_csum);
+               return false;
+       copied = iterate_and_advance2(i, bytes, addr, csum,
+                                     copy_from_user_iter_csum,
+                                     memcpy_from_iter_csum);
+       if (likely(copied == bytes))
+               return true;
+       iov_iter_revert(i, copied);
+       return false;
 }
-EXPORT_SYMBOL(csum_and_copy_from_iter);
+EXPORT_SYMBOL(csum_and_copy_from_iter_full);