RE: recvfrom/recvmsg performance and CONFIG_HARDENED_USERCOPY

From: David Laight
Date: Mon Dec 09 2019 - 06:01:37 EST

From: Eric Dumazet
> Sent: 06 December 2019 14:22
> Real question is : Do you actually need to use recvmsg() instead of recvfrom() ?
> If recvmsg() provides additional cmsg, this is not surprising it is more expensive.

Except I'm not passing in a buffer for it.
The reason I'm looking at recvmsg is that I'd like to use recvmmsg it order to
read out more than one message from a socket without doing an extra poll().
Note that I don't expect there to be a second message most of the time and
almost never a third one.

Although I think that will only ever 'win' if recvmmsg() called vfs_poll() to find
if there was more data to read before doing any of the copy_from_user() etc.

> recvmsg() also uses an indirect call, so CONFIG_RETPOLINE=y is probably hurting.

I don't have CONFIG_RETPOLINE enabled, the compiler I'm using is too old.
(gcc 4.7.3).


Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK
Registration No: 1397386 (Wales)