All of lore.kernel.org
 help / color / mirror / Atom feed
From: Oleg Nesterov <oleg@redhat.com>
To: Dmitry Safonov <0x7f454c46@gmail.com>
Cc: Ivan Delalande <colona@arista.com>,
	Al Viro <viro@zeniv.linux.org.uk>,
	linux-fsdevel@vger.kernel.org,
	open list <linux-kernel@vger.kernel.org>,
	Andy Lutomirski <luto@kernel.org>
Subject: Re: [PATCH RESEND] exec: don't force_sigsegv processes with a pending fatal signal
Date: Fri, 3 Aug 2018 15:39:24 +0200	[thread overview]
Message-ID: <20180803133923.GA19752@redhat.com> (raw)
In-Reply-To: <CAJwJo6bmFZ+2wni1d-t2hh_RqYvnN2c+NJPNyrBLp9H=StTZFg@mail.gmail.com>

On 08/02, Dmitry Safonov wrote:
>
> Hi Ivan,
>
> 2018-07-31 1:56 GMT+01:00 Ivan Delalande <colona@arista.com>:
> > We were seeing unexplained segfaults in coreutils processes and other
> > basic utilities that we tracked down to binfmt_elf failing to load
> > segments for ld.so. Digging further, the actual problem seems to occur
> > when a process gets sigkilled while it is still being loaded by the
> > kernel. In our case when _do_page_fault goes for a retry it will return
> > early as it first checks for fatal_signal_pending(), so load_elf_interp
> > also returns with error and as a result search_binary_handler will
> > force_sigsegv() which is pretty confusing as nothing actually failed
> > here.
> >
> > Fixes: 19d860a140be ("handle suicide on late failure exits in execve() in search_binary_handler()")
> > Reference: https://lkml.org/lkml/2013/2/14/5
> > Signed-off-by: Ivan Delalande <colona@arista.com>
>
> +Cc: Oleg Nesterov <oleg@redhat.com>
> +Cc: Andy Lutomirski <luto@kernel.org>

Thanks...

and sorry, I fail to understand the problem and what/how this patch tries to fix.

Hmm. After I read the next email from Dmitry it seems to me that the whole purpose
of this patch is to avoid print_fatal_signal()? If yes, the changelog should clearly
explain this.

> > --- a/fs/exec.c
> > +++ b/fs/exec.c
> > @@ -1656,7 +1656,8 @@ int search_binary_handler(struct linux_binprm *bprm)
> >                 if (retval < 0 && !bprm->mm) {
> >                         /* we got to flush_old_exec() and failed after it */
> >                         read_unlock(&binfmt_lock);
> > -                       force_sigsegv(SIGSEGV, current);
> > +                       if (!fatal_signal_pending(current))
> > +                               force_sigsegv(SIGSEGV, current);

I won't argue, but may be force_sigsegv() should check fatal_signal_pending()
itself. setup_rt_frame() can too fail if fatal_signal_pending() by the same
reason.

Oleg.

  parent reply	other threads:[~2018-08-03 15:35 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-07-31  0:56 [PATCH RESEND] exec: don't force_sigsegv processes with a pending fatal signal Ivan Delalande
2018-08-02 19:53 ` Dmitry Safonov
2018-08-02 20:19   ` Dmitry Safonov
2018-08-03 13:39   ` Oleg Nesterov [this message]
2018-08-03 23:15     ` Ivan Delalande

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=20180803133923.GA19752@redhat.com \
    --to=oleg@redhat.com \
    --cc=0x7f454c46@gmail.com \
    --cc=colona@arista.com \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=luto@kernel.org \
    --cc=viro@zeniv.linux.org.uk \
    /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.