mailing list of musl libc
 help / color / mirror / code / Atom feed
From: Rich Felker <dalias@libc.org>
To: musl@lists.openwall.com
Subject: Re: Re: Need to zero pads in msghdr
Date: Wed, 25 Jan 2017 14:59:01 -0500	[thread overview]
Message-ID: <20170125195901.GD1533@brightrain.aerifal.cx> (raw)
In-Reply-To: <CANaxB-wG0-e7yOcfB2tOHewU3FcesrdsnthJo6Lrfc3hYhTSvg@mail.gmail.com>

On Wed, Jan 25, 2017 at 11:46:44AM -0800, Andrei Vagin wrote:
> On Wed, Jan 25, 2017 at 11:40 AM, Szabolcs Nagy <nsz@port70.net> wrote:
> > * Andrei Vagin <avagin@gmail.com> [2017-01-25 10:56:22 -0800]:
> >> On Wed, Jan 25, 2017 at 8:42 AM, Andrei Vagin <avagin@gmail.com> wrote:
> >> > In this patch
> >> > http://git.musl-libc.org/cgit/musl/commit/arch/x86_64/bits/socket.h?id=7168790763cdeb794df52be6e3b39fbb021c5a64
> >> > you suppose that the kernel ignores the upper 32 bits of msg_iovlen,
> >> > but it doesn't, so pads in msghdr structures have to be zeroed before
> >> > calling sendmsg and recvmsg syscalls.
> >>
> >> Actually the problem is a bit different. In CRIU we use the msghdr
> >> structure from musl-libc, but in some cases we have to call raw system
> >> calls. We don't expect to have pads in structures and so we don't zero
> >> them.
> >
> > why do you need a raw syscall?
> 
> We inject our code into processes which are going to be dumped:
> https://criu.org/Parasite_code
> 
> And on restore we have to unmap old libc to restore process mappings.
> 
> >
> > (i think if you do raw syscalls you should use
> > your own linux syscall wrappers including typedefs
> > and macro defines, not libc ones, because the libc
> > can and does do all sorts of remapping of things to
> > workaround various mismatches between the posix
> > library api it provides and the linux syscall abi)
> 
> We know about this risk, but before this day we executed out test for
> glibc and it worked for everyone. Now we need think how to resolve the
> problem.

While you may hit problems elsewhere, I think there's a clean solution
here, just pre-zeroing the structure so that any possible padding is
zero. It's unfortunate that this is needed but it comes from the
kernel getting the structure definition wrong.

Rich


  reply	other threads:[~2017-01-25 19:59 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-01-25 16:42 Andrei Vagin
2017-01-25 17:00 ` Rich Felker
2017-01-25 18:56 ` Andrei Vagin
2017-01-25 19:40   ` Szabolcs Nagy
2017-01-25 19:46     ` Andrei Vagin
2017-01-25 19:59       ` Rich Felker [this message]
2017-01-25 23:00       ` Szabolcs Nagy
2017-01-26 15:01         ` Rich Felker

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=20170125195901.GD1533@brightrain.aerifal.cx \
    --to=dalias@libc.org \
    --cc=musl@lists.openwall.com \
    /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.
Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/musl/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).