On 8/20/20 5:49 PM, Luke Hsiao wrote: > From: Luke Hsiao <[email protected]> > > For TCP tx zero-copy, the kernel notifies the process of completions by > queuing completion notifications on the socket error queue. This patch > allows reading these notifications via recvmsg to support TCP tx > zero-copy. > > Ancillary data was originally disallowed due to privilege escalation > via io_uring's offloading of sendmsg() onto a kernel thread with kernel > credentials (https://crbug.com/project-zero/1975). So, we must ensure > that the socket type is one where the ancillary data types that are > delivered on recvmsg are plain data (no file descriptors or values that > are translated based on the identity of the calling process). > > This was tested by using io_uring to call recvmsg on the MSG_ERRQUEUE > with tx zero-copy enabled. Before this patch, we received -EINVALID from > this specific code path. After this patch, we could read tcp tx > zero-copy completion notifications from the MSG_ERRQUEUE. > > Signed-off-by: Soheil Hassas Yeganeh <[email protected]> > Signed-off-by: Arjun Roy <[email protected]> > Acked-by: Eric Dumazet <[email protected]> > Reviewed-by: Jann Horn <[email protected]> > Signed-off-by: Luke Hsiao <[email protected]>
Reviewed-by: Jens Axboe <[email protected]> -- Jens Axboe
