Patch "iov_iter: don't revert iov buffer if csum error" has been added to the 4.9-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
iov_iter: don't revert iov buffer if csum error
to the 4.9-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
iov_iter-don-t-revert-iov-buffer-if-csum-error.patch
and it can be found in the queue-4.9 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
a6a5993243550b09f620941dea741b7421fdf79cMon Sep 17 00:00:00 2001
From: Ding Tianhong <[email protected]>
Date: Sat, 29 Apr 2017 10:38:48 +0800
Subject: iov_iter: don't revert iov buffer if csum error
From: Ding Tianhong <[email protected]>
commit a6a5993243550b09f620941dea741b7421fdf79c upstream.
The patch 327868212381 (make skb_copy_datagram_msg() et.al. preserve ->msg_iter on error) will revert the iov buffer if copy to iter failed, but it didn't copy any datagram if the skb_checksum_complete error, so no need to revert any data at this place.
v2: Sabrina notice that return -EFAULT when checksum error is not correct
here, it would confuse the caller about the return value, so fix it.
--- net/core/datagram.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-)
net/core/datagram.c +7 -6
@@ -740,7 +740,7 @@ int skb_copy_and_csum_datagram_msg(strucif (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 {
@@ -748,15 +748,16 @@ int skb_copy_and_csum_datagram_msg(strucif (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 ; }
Patches currently in stable-queue which might be from [email protected] are
queue-4.9/iov_iter-don-t-revert-iov-buffer-if-csum-error.patch