af_unix: MSG_TRUNC support for dgram sockets
authorEric Dumazet <eric.dumazet@gmail.com>
Tue, 21 Feb 2012 23:24:55 +0000 (23:24 +0000)
committerDavid S. Miller <davem@davemloft.net>
Wed, 22 Feb 2012 19:47:02 +0000 (14:47 -0500)
commit9f6f9af7694ede6314bed281eec74d588ba9474f
tree4b1825f2432916f117f9104153b9c37cf58458ae
parentcdf49c283e2e105da86ca575ad35b453f5ff24ea
af_unix: MSG_TRUNC support for dgram sockets

Piergiorgio Beruto expressed the need to fetch size of first datagram in
queue for AF_UNIX sockets and suggested a patch against SIOCINQ ioctl.

I suggested instead to implement MSG_TRUNC support as a recv() input
flag, as already done for RAW, UDP & NETLINK sockets.

len = recv(fd, &byte, 1, MSG_PEEK | MSG_TRUNC);

MSG_TRUNC asks recv() to return the real length of the packet, even when
is was longer than the passed buffer.

There is risk that a userland application used MSG_TRUNC by accident
(since it had no effect on af_unix sockets) and this might break after
this patch.

Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Tested-by: Piergiorgio Beruto <piergiorgio.beruto@gmail.com>
CC: Michael Kerrisk <mtk.manpages@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/unix/af_unix.c