Now that both macvtap and tun are using skb_copy_datagram_iovec, we
can kill the abomination that is skb_copy_datagram_const_iovec.

Signed-off-by: Herbert Xu <herb...@gondor.apana.org.au>
---

 include/linux/skbuff.h |    3 -
 net/core/datagram.c    |   89 -------------------------------------------------
 2 files changed, 92 deletions(-)

diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h
index 6c8b6f6..d12c81b 100644
--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
@@ -2638,9 +2638,6 @@ int skb_copy_datagram_from_iovec(struct sk_buff *skb, int 
offset,
                                 int len);
 int zerocopy_sg_from_iovec(struct sk_buff *skb, const struct iovec *frm,
                           int offset, size_t count);
-int skb_copy_datagram_const_iovec(const struct sk_buff *from, int offset,
-                                 const struct iovec *to, int to_offset,
-                                 int size);
 void skb_free_datagram(struct sock *sk, struct sk_buff *skb);
 void skb_free_datagram_locked(struct sock *sk, struct sk_buff *skb);
 int skb_kill_datagram(struct sock *sk, struct sk_buff *skb, unsigned int 
flags);
diff --git a/net/core/datagram.c b/net/core/datagram.c
index fdbc9a8..30e2ebd 100644
--- a/net/core/datagram.c
+++ b/net/core/datagram.c
@@ -393,95 +393,6 @@ fault:
 EXPORT_SYMBOL(skb_copy_datagram_iovec);
 
 /**
- *     skb_copy_datagram_const_iovec - Copy a datagram to an iovec.
- *     @skb: buffer to copy
- *     @offset: offset in the buffer to start copying from
- *     @to: io vector to copy to
- *     @to_offset: offset in the io vector to start copying to
- *     @len: amount of data to copy from buffer to iovec
- *
- *     Returns 0 or -EFAULT.
- *     Note: the iovec is not modified during the copy.
- */
-int skb_copy_datagram_const_iovec(const struct sk_buff *skb, int offset,
-                                 const struct iovec *to, int to_offset,
-                                 int len)
-{
-       int start = skb_headlen(skb);
-       int i, copy = start - offset;
-       struct sk_buff *frag_iter;
-
-       /* Copy header. */
-       if (copy > 0) {
-               if (copy > len)
-                       copy = len;
-               if (memcpy_toiovecend(to, skb->data + offset, to_offset, copy))
-                       goto fault;
-               if ((len -= copy) == 0)
-                       return 0;
-               offset += copy;
-               to_offset += copy;
-       }
-
-       /* Copy paged appendix. Hmm... why does this look so complicated? */
-       for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) {
-               int end;
-               const skb_frag_t *frag = &skb_shinfo(skb)->frags[i];
-
-               WARN_ON(start > offset + len);
-
-               end = start + skb_frag_size(frag);
-               if ((copy = end - offset) > 0) {
-                       int err;
-                       u8  *vaddr;
-                       struct page *page = skb_frag_page(frag);
-
-                       if (copy > len)
-                               copy = len;
-                       vaddr = kmap(page);
-                       err = memcpy_toiovecend(to, vaddr + frag->page_offset +
-                                               offset - start, to_offset, 
copy);
-                       kunmap(page);
-                       if (err)
-                               goto fault;
-                       if (!(len -= copy))
-                               return 0;
-                       offset += copy;
-                       to_offset += copy;
-               }
-               start = end;
-       }
-
-       skb_walk_frags(skb, frag_iter) {
-               int end;
-
-               WARN_ON(start > offset + len);
-
-               end = start + frag_iter->len;
-               if ((copy = end - offset) > 0) {
-                       if (copy > len)
-                               copy = len;
-                       if (skb_copy_datagram_const_iovec(frag_iter,
-                                                         offset - start,
-                                                         to, to_offset,
-                                                         copy))
-                               goto fault;
-                       if ((len -= copy) == 0)
-                               return 0;
-                       offset += copy;
-                       to_offset += copy;
-               }
-               start = end;
-       }
-       if (!len)
-               return 0;
-
-fault:
-       return -EFAULT;
-}
-EXPORT_SYMBOL(skb_copy_datagram_const_iovec);
-
-/**
  *     skb_copy_datagram_from_iovec - Copy a datagram from an iovec.
  *     @skb: buffer to copy
  *     @offset: offset in the buffer to start copying to
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to