From: Steve Rago <sar@nec-labs.com>
To: Andi Kleen <andi@firstfloor.org>
Cc: Andy Lutomirski <luto@amacapital.net>,
David Miller <davem@davemloft.net>,
Network Development <netdev@vger.kernel.org>,
Michael Kerrisk-manpages <mtk.manpages@gmail.com>,
"Eric W. Biederman" <ebiederm@xmission.com>
Subject: Re: bug in passing file descriptors
Date: Tue, 8 Oct 2013 12:51:11 -0400 [thread overview]
Message-ID: <525437FF.5020905@nec-labs.com> (raw)
In-Reply-To: <20131008164108.GO6882@two.firstfloor.org>
On 10/08/2013 12:41 PM, Andi Kleen wrote:
>> I just want the semantics to be consistent. If you want Linux to
>> always require applications that call recvmsg to provide a buffer
>> size of CMSG_SPACE bytes long to retrieve control information, then
>> fail the system call when the buffer is smaller. But if you do
>> this, you risk breaking applications that work with FreeBSD, Mac OS
>> X, Solaris, and probably a few others.
>
> The primary concern is to be binary compatible with Linux.
>
> But not being compatible between 32bit and 64bit Linux processes on the same
> host would seem like a serious problem to me.
>
>> Regardless, copying 20 bytes and telling me you copied 24 is misleading and wrong.
>
> The question is could it break existing Linux applications to change it?
> And would it help with the 32/64bit compatibility?
>
> If not some other way to fix the compat layer would need to be found.
>
> -Andi
>
I'm not sure if a 64-bit process and a 32-bit process exchange file descriptors on the same system has a problem. It
certainly looks like the compat code does the right thing. I can test this tonight if you want. The discrepancy arises
because file descriptors are 4-byte quantities and treated differently (for example, when more than one is specified,
each one isn't padded to an 8-byte boundary).
The way I discovered the problem is that I had an example program in APUE that was validating that msg_controllen had
the correct value after calling recvmsg(). It worked on my 32-bit platform, but when I recompiled it and ran it on my
64-bit platform, the test failed, because msg_controllen was larger than the size that was sent via sendmsg().
Steve
next prev parent reply other threads:[~2013-10-08 16:51 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-10-07 18:27 bug in passing file descriptors Steve Rago
2013-10-07 18:44 ` Andy Lutomirski
2013-10-07 19:06 ` Steve Rago
2013-10-07 19:12 ` David Miller
2013-10-07 19:17 ` Steve Rago
2013-10-07 19:42 ` David Miller
2013-10-07 20:29 ` Steve Rago
2013-10-07 21:32 ` David Miller
2013-10-07 22:55 ` Andi Kleen
2013-10-08 14:32 ` Steve Rago
2013-10-08 16:02 ` Andy Lutomirski
2013-10-08 16:18 ` Steve Rago
2013-10-08 16:41 ` Andi Kleen
2013-10-08 16:51 ` Steve Rago [this message]
2013-10-09 14:07 ` Steve Rago
2013-10-08 8:43 ` David Laight
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=525437FF.5020905@nec-labs.com \
--to=sar@nec-labs.com \
--cc=andi@firstfloor.org \
--cc=davem@davemloft.net \
--cc=ebiederm@xmission.com \
--cc=luto@amacapital.net \
--cc=mtk.manpages@gmail.com \
--cc=netdev@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.