|
@@ -755,13 +755,11 @@ ip_generic_getfrag(void *from, char *to, int offset, int len, int odd, struct sk
|
|
struct msghdr *msg = from;
|
|
struct msghdr *msg = from;
|
|
|
|
|
|
if (skb->ip_summed == CHECKSUM_PARTIAL) {
|
|
if (skb->ip_summed == CHECKSUM_PARTIAL) {
|
|
- /* XXX: stripping const */
|
|
|
|
- if (memcpy_fromiovecend(to, (struct iovec *)msg->msg_iter.iov, offset, len) < 0)
|
|
|
|
|
|
+ if (copy_from_iter(to, len, &msg->msg_iter) != len)
|
|
return -EFAULT;
|
|
return -EFAULT;
|
|
} else {
|
|
} else {
|
|
__wsum csum = 0;
|
|
__wsum csum = 0;
|
|
- /* XXX: stripping const */
|
|
|
|
- if (csum_partial_copy_fromiovecend(to, (struct iovec *)msg->msg_iter.iov, offset, len, &csum) < 0)
|
|
|
|
|
|
+ if (csum_and_copy_from_iter(to, len, &csum, &msg->msg_iter) != len)
|
|
return -EFAULT;
|
|
return -EFAULT;
|
|
skb->csum = csum_block_add(skb->csum, csum, odd);
|
|
skb->csum = csum_block_add(skb->csum, csum, odd);
|
|
}
|
|
}
|