iov_iter, net: Merge csum_and_copy_from_iter{,_full}() together
authorDavid Howells <dhowells@redhat.com>
Mon, 25 Sep 2023 12:03:08 +0000 (13:03 +0100)
committerChristian Brauner <brauner@kernel.org>
Mon, 9 Oct 2023 07:35:14 +0000 (09:35 +0200)
Move csum_and_copy_from_iter_full() out of line and then merge
csum_and_copy_from_iter() into its only caller.

Signed-off-by: David Howells <dhowells@redhat.com>
Link: https://lore.kernel.org/r/20230925120309.1731676-12-dhowells@redhat.com
cc: Alexander Viro <viro@zeniv.linux.org.uk>
cc: Jens Axboe <axboe@kernel.dk>
cc: Christoph Hellwig <hch@lst.de>
cc: Christian Brauner <christian@brauner.io>
cc: Matthew Wilcox <willy@infradead.org>
cc: Linus Torvalds <torvalds@linux-foundation.org>
cc: David Laight <David.Laight@ACULAB.COM>
cc: "David S. Miller" <davem@davemloft.net>
cc: Eric Dumazet <edumazet@google.com>
cc: Jakub Kicinski <kuba@kernel.org>
cc: Paolo Abeni <pabeni@redhat.com>
cc: linux-block@vger.kernel.org
cc: linux-fsdevel@vger.kernel.org
cc: linux-mm@kvack.org
cc: netdev@vger.kernel.org
Signed-off-by: Christian Brauner <brauner@kernel.org>
include/linux/skbuff.h
net/core/datagram.c
net/core/skbuff.c

index c81ef5d769538f225b1fd737ad9a8a5f3782dc7a..be402f55f6d6a64a1d5d5489ca451ca3e1d14a50 100644 (file)
@@ -3679,23 +3679,8 @@ static inline int __must_check skb_put_padto(struct sk_buff *skb, unsigned int l
        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)
index 452620dd41e455774e74e5b8c3d54da015c343ac..722311eeee1812c263a44eeb8afe72f1c6acae04 100644 (file)
@@ -738,6 +738,11 @@ size_t memcpy_to_iter_csum(void *iter_to, size_t progress,
        return 0;
 }
 
+struct csum_state {
+       __wsum csum;
+       size_t off;
+};
+
 static size_t csum_and_copy_to_iter(const void *addr, size_t bytes, void *_csstate,
                                    struct iov_iter *i)
 {
index 3efed86321dbd548647c1f4f3229932d7b36a13d..2bfa6a7ba2445ba50d021c9b4eeb1db4d9de41de 100644 (file)
@@ -6955,13 +6955,19 @@ size_t copy_from_user_iter_csum(void __user *iter_from, size_t progress,
        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);