From: Al Viro Date: Wed, 2 Nov 2016 02:42:45 +0000 (-0400) Subject: make skb_add_data,{_nocache}() and skb_copy_to_page_nocache() advance only on success X-Git-Tag: v4.10-rc1~70^2^4~1 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=15e6cb46c9b09711d1224ae5418b53140e1ba444;p=thirdparty%2Flinux.git make skb_add_data,{_nocache}() and skb_copy_to_page_nocache() advance only on success Signed-off-by: Al Viro --- diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h index 32810f279f8e4..9cfae2e73b3c3 100644 --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h @@ -2809,12 +2809,12 @@ static inline int skb_add_data(struct sk_buff *skb, if (skb->ip_summed == CHECKSUM_NONE) { __wsum csum = 0; - if (csum_and_copy_from_iter(skb_put(skb, copy), copy, - &csum, from) == copy) { + if (csum_and_copy_from_iter_full(skb_put(skb, copy), copy, + &csum, from)) { skb->csum = csum_block_add(skb->csum, csum, off); return 0; } - } else if (copy_from_iter(skb_put(skb, copy), copy, from) == copy) + } else if (copy_from_iter_full(skb_put(skb, copy), copy, from)) return 0; __skb_trim(skb, off); diff --git a/include/net/sock.h b/include/net/sock.h index 92b269709b9a8..5dd0fed82a063 100644 --- a/include/net/sock.h +++ b/include/net/sock.h @@ -1783,13 +1783,13 @@ static inline int skb_do_copy_data_nocache(struct sock *sk, struct sk_buff *skb, { if (skb->ip_summed == CHECKSUM_NONE) { __wsum csum = 0; - if (csum_and_copy_from_iter(to, copy, &csum, from) != copy) + if (!csum_and_copy_from_iter_full(to, copy, &csum, from)) return -EFAULT; skb->csum = csum_block_add(skb->csum, csum, offset); } else if (sk->sk_route_caps & NETIF_F_NOCACHE_COPY) { - if (copy_from_iter_nocache(to, copy, from) != copy) + if (!copy_from_iter_full_nocache(to, copy, from)) return -EFAULT; - } else if (copy_from_iter(to, copy, from) != copy) + } else if (!copy_from_iter_full(to, copy, from)) return -EFAULT; return 0;