[PATCH v4 0/3] Fix {recv,send}{m}msg standard compliance (BZ#16919)

Florian Weimer fweimer@redhat.com
Wed Jun 8 08:36:00 GMT 2016


On 03/28/2016 04:33 PM, Adhemerval Zanella wrote:

> This patchset fixes BZ#16919, recvmsg standard compliance, where Linux
> and POSIX differs in the msghdr and mmsghdr internal struct sizes.
> The issue is POSIX defines [1] both msghdr.msg_namelen, msghdr.controllen,
> and cmsghdr.cmsg_len as socklen_t, where Linux uses size_t.  So for 64-bits
> architectures where size_t is larger sockelen_t it leads to standard
> inconsistence.  Linux also added recvmmsg and sendmmsg, which uses a
> composite struct based on msghdr (mmsghdr).

This patchset breaks various network emulation libraries because 
applications use the new struct msghdr definition, yet dlsym (RTLD_NEXT, 
"recvmsg") picks the compat implementation.

Is this breakage really worth increased standards compliance?  I think 
we should roll this back before the 2.24 release and simply document the 
deviation from POSIX.

Florian



More information about the Libc-alpha mailing list