summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAl Viro2016-11-02 03:42:45 +0100
committerAl Viro2016-12-05 20:34:30 +0100
commit15e6cb46c9b09711d1224ae5418b53140e1ba444 (patch)
tree752327459c25e4d36f8523c571384857ec64a39f
parent[iov_iter] new primitives - copy_from_iter_full() and friends (diff)
downloadkernel-qcow2-linux-15e6cb46c9b09711d1224ae5418b53140e1ba444.tar.gz
kernel-qcow2-linux-15e6cb46c9b09711d1224ae5418b53140e1ba444.tar.xz
kernel-qcow2-linux-15e6cb46c9b09711d1224ae5418b53140e1ba444.zip
make skb_add_data,{_nocache}() and skb_copy_to_page_nocache() advance only on success
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
-rw-r--r--include/linux/skbuff.h6
-rw-r--r--include/net/sock.h6
2 files changed, 6 insertions, 6 deletions
diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h
index 32810f279f8e..9cfae2e73b3c 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 92b269709b9a..5dd0fed82a06 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;