]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
skb_copy_datagram_iovec() can die
authorAl Viro <viro@zeniv.linux.org.uk>
Mon, 24 Nov 2014 23:29:54 +0000 (18:29 -0500)
committerAl Viro <viro@zeniv.linux.org.uk>
Tue, 9 Dec 2014 21:29:11 +0000 (16:29 -0500)
no callers other than itself.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
include/linux/skbuff.h
net/core/datagram.c

index 4902f2df90c813eab733c056c5b8825bd9bcaa9c..ab0bc43c82a4965b354d966d3a0db7ef82a00009 100644 (file)
@@ -2644,8 +2644,6 @@ struct sk_buff *skb_recv_datagram(struct sock *sk, unsigned flags, int noblock,
                                  int *err);
 unsigned int datagram_poll(struct file *file, struct socket *sock,
                           struct poll_table_struct *wait);
-int skb_copy_datagram_iovec(const struct sk_buff *from, int offset,
-                           struct iovec *to, int size);
 int skb_copy_datagram_iter(const struct sk_buff *from, int offset,
                           struct iov_iter *to, int size);
 static inline int skb_copy_datagram_msg(const struct sk_buff *from, int offset,
index 41075ed6bb52003029e111704c14d65d060b90d0..df493d68330c03d1cb5b59e40d31294d7f45b3f8 100644 (file)
@@ -309,90 +309,6 @@ int skb_kill_datagram(struct sock *sk, struct sk_buff *skb, unsigned int flags)
 }
 EXPORT_SYMBOL(skb_kill_datagram);
 
-/**
- *     skb_copy_datagram_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
- *     @len: amount of data to copy from buffer to iovec
- *
- *     Note: the iovec is modified during the copy.
- */
-int skb_copy_datagram_iovec(const struct sk_buff *skb, int offset,
-                           struct iovec *to, int len)
-{
-       int start = skb_headlen(skb);
-       int i, copy = start - offset;
-       struct sk_buff *frag_iter;
-
-       trace_skb_copy_datagram_iovec(skb, len);
-
-       /* Copy header. */
-       if (copy > 0) {
-               if (copy > len)
-                       copy = len;
-               if (memcpy_toiovec(to, skb->data + offset, copy))
-                       goto fault;
-               if ((len -= copy) == 0)
-                       return 0;
-               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_toiovec(to, vaddr + frag->page_offset +
-                                            offset - start, copy);
-                       kunmap(page);
-                       if (err)
-                               goto fault;
-                       if (!(len -= copy))
-                               return 0;
-                       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_iovec(frag_iter,
-                                                   offset - start,
-                                                   to, copy))
-                               goto fault;
-                       if ((len -= copy) == 0)
-                               return 0;
-                       offset += copy;
-               }
-               start = end;
-       }
-       if (!len)
-               return 0;
-
-fault:
-       return -EFAULT;
-}
-EXPORT_SYMBOL(skb_copy_datagram_iovec);
-
 /**
  *     skb_copy_datagram_iter - Copy a datagram to an iovec iterator.
  *     @skb: buffer to copy