Re: [PATCH RFC v2 00/12] socket sendmsg MSG_ZEROCOPY
From: Tom Herbert <hidden>
Date: 2017-03-01 00:28:51
Also in:
netdev
On Tue, Feb 28, 2017 at 3:22 PM, Eric Dumazet [off-list ref] wrote:
On Tue, 2017-02-28 at 14:52 -0800, Andy Lutomirski wrote:quoted
The user pages are a gift to the kernel. The application may not modify this memory ever, otherwise the page cache and on-disk data may differ. This is just not okay IMO.TCP works just fine in this case. TX checksum will be computed by the NIC after/while data is copied. If really the application changes the data, that will not cause any problems, other than user side consistency. This is why we require a copy (for all buffers that came from zero-copy) if network stack hits a device that can not offload TX checksum. Even pwrite() does not guarantee consistency if multiple threads are using it on overlapping regions.
The Mellanox team working on TLS offload pointed out to us that if data is changed for a retransmit then it becomes trivial for someone snooping to break the encryption. Sounds pretty scary and it would be a shame if we couldn't use zero-copy in that use case :-( Hopefully we can find a solution... Tom