diff --git a/net/core/datagram.c b/net/core/datagram.c index 94cc4705e91d..62e44ab136b7 100644 --- a/net/core/datagram.c +++ b/net/core/datagram.c @@ -551,7 +551,7 @@ int skb_copy_datagram_from_iter(struct sk_buff *skb, int offset, int len) { int start = skb_headlen(skb); - int i, copy = start - offset; + int i, copy = start - offset, start_off = offset; struct sk_buff *frag_iter; /* Copy header. */ @@ -614,6 +614,7 @@ int skb_copy_datagram_from_iter(struct sk_buff *skb, int offset, return 0; fault: + iov_iter_revert(from, offset - start_off); return -EFAULT; } EXPORT_SYMBOL(skb_copy_datagram_from_iter);