From: Neil Horman <nhorman@tuxdriver.com>
To: Oleg Nesterov <oleg@redhat.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
linux-kernel@vger.kernel.org, earl_chew@agilent.com,
Alan Cox <alan@lxorguk.ukuu.org.uk>,
Andi Kleen <andi@firstfloor.org>
Subject: Re: [PATCH 2/2] exec: Make do_coredump more robust and safer when using pipes in core_pattern (v3)
Date: Sun, 28 Jun 2009 22:36:21 -0400 [thread overview]
Message-ID: <20090629023621.GA4289@localhost.localdomain> (raw)
In-Reply-To: <20090628222455.GA21475@redhat.com>
On Mon, Jun 29, 2009 at 12:24:55AM +0200, Oleg Nesterov wrote:
> On 06/28, Neil Horman wrote:
> >
> > Allow for the kernel to wait for a core_pattern process to complete
>
> (please change the subject to match)
>
Fine.
> > One of the things core_pattern processes might do is interrogate the status of a
> > crashing process via its /proc/pid directory. To ensure that that directory is
> > not removed prematurely, we wait for the process to exit prior to cleaning it
> > up.
> >
> > Since the addition of this feature makes it possible to block the reaping of a
> > crashed process (if the collecting process never exits), Also introduce a new
> > sysctl: core_pipe_limit.
>
> Perhaps this sysctl should be added in a separate patch? This patch mixes
> differents things imho.
>
No, I disagree. If we're going to have a sysctl, It should be added in this
patch. I agree that since these processes run as root, we can have all sort of
bad things happen. But I think theres an advantage to being able to limit the
damage that a core_pattern process can do if it never exits. This is a problem
we can avoid easily, and I'd rather not introduce the possibility of waiting
(forever) on a process without the ability to mitigate the risks that incurrs.
> But in fact I don't really understand why do we need the new sysctl. Yes,
> if the collecting process never exits, the coredumping thread can't be reaped.
> But this process runs as root, it can do other bad things. And let's suppose
> it just does nothing, say sleeps forever, and do not read the data from pipe.
> In that case, regardless of any sysctls, ->core_dump() never finishes too.
>
Not always true, in the event that the core file is smaller than the pipe size.
But regardless, if ->core_dump never returns due to the aforementioned
situation, the sysctl provides the ability to mitigate the damange that can do,
since the dump count is held while ->core_dump is called.
> > +fail_dropcount:
> > + if (dump_count) {
> > + while (core_pipe_limit && inode->i_pipe->readers)
> > + pipe_wait(inode->i_pipe);
>
> No, no, this is racy and wrong.
>
> First, it is possible that it exits between ->readers != 0 check and
> pipe_wait(), we will sleep forever.
>
Its my understanding that pipe_wait returns from any pipe event, including the
closing of a pipe, I would have thought that the above code would catch that,
although, as I type that, I can see how it wouldn't without a lock.
> Also, pipe_wait() should be called under pipe_lock(), I guess lockdep
> should complain if you test your patch ;)
>
I did test it, and received no such lockdep warnings.
> I'd suggest you to make a simple helper,
>
> static inline void xxx(struct file *file)
> {
> struct pipe_inode_info *pipe = file->...;
>
> wait_event(pipe->wait, pipe->readers == 0);
> }
>
> I believe we don't need pipe_lock().
>
Ok, I like that, I'll repost tomorrow morning, after I get some sleep.
Thanks!
Neil
> Oleg.
>
>
>
next prev parent reply other threads:[~2009-06-29 2:36 UTC|newest]
Thread overview: 94+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-06-22 17:28 [PATCH] exec: Make do_coredump more robust and safer when using pipes in core_pattern Neil Horman
2009-06-25 23:30 ` Andrew Morton
2009-06-26 1:49 ` Neil Horman
2009-06-26 10:48 ` Neil Horman
2009-06-26 16:20 ` Andrew Morton
2009-06-26 17:30 ` Neil Horman
2009-06-28 19:31 ` Andi Kleen
2009-06-28 20:52 ` Andrew Morton
2009-06-28 21:00 ` Andi Kleen
2009-06-28 21:18 ` Andrew Morton
2009-06-28 21:50 ` Eric W. Biederman
2009-06-28 21:35 ` Eric W. Biederman
2009-06-28 21:48 ` Andi Kleen
2009-06-28 22:06 ` Eric W. Biederman
2009-06-29 9:15 ` Andi Kleen
2009-06-28 21:52 ` Andrew Morton
2009-06-26 18:00 ` Neil Horman
2009-06-26 18:02 ` [PATCH 1/2] exec: Make do_coredump more robust and safer when using pipes in core_pattern: recursive dump detection Neil Horman
2009-06-26 16:59 ` Oleg Nesterov
2009-06-26 20:24 ` Neil Horman
2009-06-26 19:14 ` [PATCH 0/2] do_coredump: misc cleanups Oleg Nesterov
2009-06-26 19:14 ` [PATCH 1/2] do_coredump: factor out put_cred() calls Oleg Nesterov
2009-06-26 22:40 ` Roland McGrath
2009-06-26 20:33 ` Oleg Nesterov
2009-06-26 19:16 ` [PATCH 2/2] do_coredump: move !ispipe code into "else" branch Oleg Nesterov
2009-06-26 20:18 ` Q: do_coredump() && d_unhashed() Oleg Nesterov
2009-06-26 22:57 ` [PATCH 0/2] do_coredump: misc cleanups Neil Horman
2009-06-26 19:37 ` [PATCH 1/2] exec: Make do_coredump more robust and safer when using pipes in core_pattern: recursive dump detection Andrew Morton
2009-06-26 20:17 ` Neil Horman
2009-06-26 18:03 ` [PATCH 2/2] exec: Make do_coredump more robust and safer when using pipes in core_pattern: wait for core collectors Neil Horman
2009-06-26 16:48 ` Oleg Nesterov
2009-06-26 20:20 ` Neil Horman
2009-06-29 0:33 ` [PATCH 1/2] exec: Make do_coredump more robust and safer when using pipes in core_pattern (v3) Neil Horman
2009-06-29 0:35 ` [PATCH 2/2] " Neil Horman
2009-06-28 22:24 ` Oleg Nesterov
2009-06-28 23:24 ` Oleg Nesterov
2009-06-29 2:36 ` Neil Horman [this message]
2009-06-28 23:32 ` Oleg Nesterov
2009-06-29 10:21 ` Neil Horman
2009-06-30 0:06 ` Oleg Nesterov
2009-06-29 0:32 ` [PATCH 0/2] " Neil Horman
2009-06-30 17:38 ` [PATCH 0/3] exec: Make do_coredump more robust and safer when using pipes in core_pattern (v4) Neil Horman
2009-06-30 17:42 ` [PATCH 1/3] exec: Make do_coredump more resilient to recursive crashes (v4) Neil Horman
2009-06-30 17:43 ` [PATCH 2/3] exec: let do_coredump limit the number of concurrent dumps to pipes (v4) Neil Horman
2009-06-30 17:46 ` [PATCH 3/3] exec: Allow do_coredump to wait for user space pipe readers to complete (v4) Neil Horman
2009-07-01 5:52 ` Oleg Nesterov
2009-07-01 10:31 ` Neil Horman
2009-07-01 12:25 ` Oleg Nesterov
2009-07-01 14:12 ` Neil Horman
2009-07-01 14:48 ` Oleg Nesterov
2009-07-01 15:26 ` [PATCH 0/3] exec: Make do_coredump more robust and safer when using pipes in core_pattern (v5) Neil Horman
2009-07-01 15:30 ` [PATCH 1/3] exec: Make do_coredump more resilient to recursive crashes (v5) Neil Horman
2009-07-01 15:34 ` [PATCH 2/3] exec: let do_coredump limit the number of concurrent dumps to pipes (v5) Neil Horman
2009-07-01 15:37 ` [PATCH 3/3] exec: Allow do_coredump to wait for user space pipe readers to complete (v5) Neil Horman
2009-07-01 16:06 ` Oleg Nesterov
2009-07-01 18:19 ` Neil Horman
2009-07-01 18:28 ` [PATCH 0/3] exec: Make do_coredump more robust and safer when using pipes in core_pattern (v6) Neil Horman
2009-07-01 18:31 ` [PATCH 1/3] exec: Make do_coredump more resilient to recursive crashes (v6) Neil Horman
2009-07-01 18:32 ` [PATCH 2/3] exec: let do_coredump limit the number of concurrent dumps to pipes (v6) Neil Horman
2009-07-01 18:37 ` [PATCH 3/3] exec: Allow do_coredump to wait for user space pipe readers to complete (v6) Neil Horman
2009-07-02 8:29 ` Oleg Nesterov
2009-07-02 10:29 ` Neil Horman
2009-07-02 11:36 ` Oleg Nesterov
2009-07-02 14:44 ` Neil Horman
2009-07-02 15:37 ` Oleg Nesterov
2009-07-02 17:53 ` Neil Horman
2009-07-03 10:10 ` Oleg Nesterov
2009-07-02 22:57 ` [PATCH 0/3] exec: Make do_coredump more robust and safer when using pipes in core_pattern (v7) Neil Horman
2009-07-02 22:59 ` [PATCH 1/3] exec: Make do_coredump more resilient to recursive crashes (v7) Neil Horman
2009-07-02 23:00 ` [PATCH 2/3] exec: let do_coredump limit the number of concurrent dumps to pipes (v7) Neil Horman
2009-07-02 23:01 ` [PATCH 3/3] exec: Allow do_coredump to wait for user space pipe readers to complete (v7) Neil Horman
2009-07-03 10:16 ` Oleg Nesterov
2009-07-03 10:44 ` [PATCH 0/3] exec: Make do_coredump more robust and safer when using pipes in core_pattern (v8) Neil Horman
2009-07-03 10:50 ` [PATCH 1/3] exec: Make do_coredump more resilient to recursive crashes (v8) Neil Horman
2009-07-07 16:14 ` Neil Horman
2009-07-03 10:51 ` [PATCH 2/3] exec: let do_coredump limit the number of concurrent dumps to pipes (v8) Neil Horman
2009-07-07 16:15 ` Neil Horman
2009-07-03 10:52 ` [PATCH 3/3] exec: Allow do_coredump to wait for user space pipe readers to complete (v8) Neil Horman
2009-07-07 16:19 ` Neil Horman
2009-07-07 16:35 ` Oleg Nesterov
2009-07-07 16:13 ` [PATCH 0/3] exec: Make do_coredump more robust and safer when using pipes in core_pattern (v8) Neil Horman
2009-07-20 15:49 ` [PATCH 0/3] exec: Make do_coredump more robust and safer when using pipes in core_pattern (v9) Neil Horman
2009-07-20 16:27 ` [PATCH 1/3] exec: Make do_coredump more resilient to recursive crashes (v9) Neil Horman
2009-07-20 16:29 ` [PATCH 2/3] exec: let do_coredump limit the number of concurrent dumps to pipes (v9) Neil Horman
2009-08-07 17:08 ` Randy Dunlap
2009-07-20 16:32 ` [PATCH 3/3] exec: Allow do_coredump to wait for user space pipe readers to complete (v9) Neil Horman
2009-07-29 15:13 ` [PATCH] exec: Make do_coredump more robust and safer when using pipes in core_pattern Scott James Remnant
2009-07-29 20:18 ` Neil Horman
2009-07-31 20:20 ` Scott James Remnant
2009-08-01 13:41 ` Neil Horman
2009-08-01 18:28 ` Scott James Remnant
2009-08-02 0:22 ` Neil Horman
2009-08-02 13:49 ` Scott James Remnant
2009-08-02 23:50 ` Neil Horman
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=20090629023621.GA4289@localhost.localdomain \
--to=nhorman@tuxdriver.com \
--cc=akpm@linux-foundation.org \
--cc=alan@lxorguk.ukuu.org.uk \
--cc=andi@firstfloor.org \
--cc=earl_chew@agilent.com \
--cc=linux-kernel@vger.kernel.org \
--cc=oleg@redhat.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.
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.