Merge tag 'drm-next-2018-10-24' of git://anongit.freedesktop.org/drm/drm
[platform/kernel/linux-rpi.git] / net / core / skbuff.c
index 428094b..946de0e 100644 (file)
@@ -1846,8 +1846,9 @@ int pskb_trim_rcsum_slow(struct sk_buff *skb, unsigned int len)
        if (skb->ip_summed == CHECKSUM_COMPLETE) {
                int delta = skb->len - len;
 
-               skb->csum = csum_sub(skb->csum,
-                                    skb_checksum(skb, len, delta, 0));
+               skb->csum = csum_block_sub(skb->csum,
+                                          skb_checksum(skb, len, delta, 0),
+                                          len);
        }
        return __pskb_trim(skb, len);
 }
@@ -3381,64 +3382,6 @@ unsigned int skb_find_text(struct sk_buff *skb, unsigned int from,
 }
 EXPORT_SYMBOL(skb_find_text);
 
-/**
- * skb_append_datato_frags - append the user data to a skb
- * @sk: sock  structure
- * @skb: skb structure to be appended with user data.
- * @getfrag: call back function to be used for getting the user data
- * @from: pointer to user message iov
- * @length: length of the iov message
- *
- * Description: This procedure append the user data in the fragment part
- * of the skb if any page alloc fails user this procedure returns  -ENOMEM
- */
-int skb_append_datato_frags(struct sock *sk, struct sk_buff *skb,
-                       int (*getfrag)(void *from, char *to, int offset,
-                                       int len, int odd, struct sk_buff *skb),
-                       void *from, int length)
-{
-       int frg_cnt = skb_shinfo(skb)->nr_frags;
-       int copy;
-       int offset = 0;
-       int ret;
-       struct page_frag *pfrag = &current->task_frag;
-
-       do {
-               /* Return error if we don't have space for new frag */
-               if (frg_cnt >= MAX_SKB_FRAGS)
-                       return -EMSGSIZE;
-
-               if (!sk_page_frag_refill(sk, pfrag))
-                       return -ENOMEM;
-
-               /* copy the user data to page */
-               copy = min_t(int, length, pfrag->size - pfrag->offset);
-
-               ret = getfrag(from, page_address(pfrag->page) + pfrag->offset,
-                             offset, copy, 0, skb);
-               if (ret < 0)
-                       return -EFAULT;
-
-               /* copy was successful so update the size parameters */
-               skb_fill_page_desc(skb, frg_cnt, pfrag->page, pfrag->offset,
-                                  copy);
-               frg_cnt++;
-               pfrag->offset += copy;
-               get_page(pfrag->page);
-
-               skb->truesize += copy;
-               refcount_add(copy, &sk->sk_wmem_alloc);
-               skb->len += copy;
-               skb->data_len += copy;
-               offset += copy;
-               length -= copy;
-
-       } while (length > 0);
-
-       return 0;
-}
-EXPORT_SYMBOL(skb_append_datato_frags);
-
 int skb_append_pagefrags(struct sk_buff *skb, struct page *page,
                         int offset, size_t size)
 {