On Mon, 9 Jul 2007 04:01:58 -0700 (PDT) bugme-daemon@bugzilla.kernel.org wrote:
http://bugzilla.kernel.org/show_bug.cgi?id=8726
Summary: MSG_TRUNC not regarded in unix_dgram_recvmsg()
Product: Networking
Version: 2.5
KernelVersion: 2.6.19
Platform: All
OS/Version: Linux
Tree: Mainline
Status: NEW
Severity: normal
Priority: P1
Component: Other
AssignedTo: acme@ghostprotocols.net
ReportedBy: garkein@mailueberfall.de
Problem Description:
In unix_dgram_recvmsg() in af_unix.c the flag MSG_TRUNC is not regarded as
described in the recv(2) man page.
This did work in older kernels (I have a working 2.6.13, but am not sure if
that is a plain kernel.org one, nor if it was the last working revision).
I believe the bug was introduced when the variable "copied" was removed from
the code.
IMHO, the line 1650:
err = size;
should read
err = (flags & MSG_TRUNC) ? skb->len : size;