On Tue, May 19, 2026 at 10:03:39AM +0200, Laurent Vivier wrote: > On 5/19/26 07:08, David Gibson wrote: > > On Mon, May 18, 2026 at 02:26:25PM +0200, Laurent Vivier wrote: > > > Change udp_update_hdr4() and udp_update_hdr6() to take an iov_tail > > > pointing at the UDP frame instead of a contiguous udp_payload_t buffer > > > and explicit data length. This lets vhost-user pass scatter-gather > > > virtqueue buffers directly without an intermediate copy. > > > > > > The UDP header is built into a local struct udphdr and written back with > > > IOV_PUSH_HEADER(). On the tap side, udp_tap_prepare() wraps the > > > existing udp_payload_t in a two-element iov to match the new interface. > > > > > > Signed-off-by: Laurent Vivier > > > > Alas, this still has a potentially aliased memcpy(), see below. > > Did you see I updated patch 2 to avoid the memcpy() if the header is > already in place? > (I think I should have removed your R-b...) I saw the note in the changelog, but I didn't spot the place in the code specifically - I think I skipped patch 2 because of the R-b and assumed the change was in patch 3. Unfortunately the one in this patch is still there. -- David Gibson (he or they) | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you, not the other way | around. http://www.ozlabs.org/~dgibson