diff options
author | Sagi Grimberg <sagi@lightbitslabs.com> | 2018-12-03 20:52:06 -0500 |
---|---|---|
committer | Christoph Hellwig <hch@lst.de> | 2018-12-13 03:58:52 -0500 |
commit | 0fc07791bc775478d9450ca9c6c674b45f6c1998 (patch) | |
tree | dd564310efba418d90df037ad83a389d02e10c28 /net | |
parent | 3152a974678a1e80c3c16d4b86522ecc500be529 (diff) |
datagram: open-code copy_page_to_iter
This will be useful to consolidate skb_copy_and_hash_datagram_iter and
skb_copy_and_csum_datagram to a single code path.
Acked-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sagi Grimberg <sagi@lightbitslabs.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
Diffstat (limited to 'net')
-rw-r--r-- | net/core/datagram.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/net/core/datagram.c b/net/core/datagram.c index 57f3a6fcfc1e..abe642181b64 100644 --- a/net/core/datagram.c +++ b/net/core/datagram.c | |||
@@ -445,11 +445,14 @@ int skb_copy_datagram_iter(const struct sk_buff *skb, int offset, | |||
445 | 445 | ||
446 | end = start + skb_frag_size(frag); | 446 | end = start + skb_frag_size(frag); |
447 | if ((copy = end - offset) > 0) { | 447 | if ((copy = end - offset) > 0) { |
448 | struct page *page = skb_frag_page(frag); | ||
449 | u8 *vaddr = kmap(page); | ||
450 | |||
448 | if (copy > len) | 451 | if (copy > len) |
449 | copy = len; | 452 | copy = len; |
450 | n = copy_page_to_iter(skb_frag_page(frag), | 453 | n = copy_to_iter(vaddr + frag->page_offset + |
451 | frag->page_offset + offset - | 454 | offset - start, copy, to); |
452 | start, copy, to); | 455 | kunmap(page); |
453 | offset += n; | 456 | offset += n; |
454 | if (n != copy) | 457 | if (n != copy) |
455 | goto short_copy; | 458 | goto short_copy; |