Al Viro wrote:
> 
> Another thing (and if that works, it's *NOT* a proper fix - it would be
> papering over the problem, but at least it would show where to look for
> it) - try (on top of mainline) the following delta:

I tried it on top of v4.6.4 and on top of the very recent v4.7-2509-g59ebc44
from Linus, and still got corruption.

> 
> diff --git a/net/core/datagram.c b/net/core/datagram.c
> index b7de71f..0ee5995 100644
> --- a/net/core/datagram.c
> +++ b/net/core/datagram.c
> @@ -734,7 +734,7 @@ int skb_copy_and_csum_datagram_msg(struct sk_buff *skb,
>       if (!chunk)
>               return 0;
>  
> -     if (msg_data_left(msg) < chunk) {
> +     if (iov_iter_single_seg_count(&msg->msg_iter) < chunk) {
>               if (__skb_checksum_complete(skb))
>                       goto csum_error;
>               if (skb_copy_datagram_msg(skb, hlen, msg, chunk))
> 

-- 
Alan Curry

Reply via email to