Merge branch 'work.iov_iter' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
Pull iov_iter updates from Al Viro: "Cleanups that sat in -next + -stable fodder that has just missed 4.11. There's more iov_iter work in my local tree, but I'd prefer to push the stuff that had been in -next first" * 'work.iov_iter' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: iov_iter: don't revert iov buffer if csum error generic_file_read_iter(): make use of iov_iter_revert() generic_file_direct_write(): make use of iov_iter_revert() orangefs: use iov_iter_revert() sctp: switch to copy_from_iter_full() net/9p: switch to copy_from_iter_full() switch memcpy_from_msg() to copy_from_iter_full() rds: make use of iov_iter_revert()
This commit is contained in:
@@ -760,7 +760,7 @@ int skb_copy_and_csum_datagram_msg(struct sk_buff *skb,
|
||||
|
||||
if (msg_data_left(msg) < chunk) {
|
||||
if (__skb_checksum_complete(skb))
|
||||
goto csum_error;
|
||||
return -EINVAL;
|
||||
if (skb_copy_datagram_msg(skb, hlen, msg, chunk))
|
||||
goto fault;
|
||||
} else {
|
||||
@@ -768,15 +768,16 @@ int skb_copy_and_csum_datagram_msg(struct sk_buff *skb,
|
||||
if (skb_copy_and_csum_datagram(skb, hlen, &msg->msg_iter,
|
||||
chunk, &csum))
|
||||
goto fault;
|
||||
if (csum_fold(csum))
|
||||
goto csum_error;
|
||||
|
||||
if (csum_fold(csum)) {
|
||||
iov_iter_revert(&msg->msg_iter, chunk);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (unlikely(skb->ip_summed == CHECKSUM_COMPLETE))
|
||||
netdev_rx_csum_fault(skb->dev);
|
||||
}
|
||||
return 0;
|
||||
csum_error:
|
||||
iov_iter_revert(&msg->msg_iter, chunk);
|
||||
return -EINVAL;
|
||||
fault:
|
||||
return -EFAULT;
|
||||
}
|
||||
|
Reference in New Issue
Block a user