From: Neil Horman <nhorman@tuxdriver.com>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: linux-kernel@vger.kernel.org, Rusty Russell <rusty@rustcorp.com.au>
Subject: Re: [PATCH] kmod: Fix race in usermodehelper code
Date: Wed, 1 Jul 2009 20:24:07 -0400 [thread overview]
Message-ID: <20090702002407.GA20298@localhost.localdomain> (raw)
In-Reply-To: <20090701135631.41e590f9.akpm@linux-foundation.org>
On Wed, Jul 01, 2009 at 01:56:31PM -0700, Andrew Morton wrote:
> On Tue, 30 Jun 2009 22:48:03 -0400
> Neil Horman <nhorman@tuxdriver.com> wrote:
>
> > User Mode Helper: Fix race in UMH_WAIT_EXEC case
> >
> > The user mode helper code has a race in it. call_usermodehelper_exec takes an
> > allocated subprocess_info structure, which it passes to a workqueue, and then
> > passes it to a kernel thread which it creates, after which it calls complete to
> > signal to the caller of call_usremodehelper_exec that it can free the
> > subprocess_info struct. But since we use that structure in the created thread,
> > we can't call complete from __call_usermodehelper, which is where we create the
> > kernel_thread. We need to call complete from within the kernel thread and then
> > not use subprocess_info afterward in the case of UMH_WAIT_EXEC. Tested
> > successfully by me.
> >
>
> <stares at the code for ten minutes>
>
> Geeze that's getting complex, isn't it? The patch looks OK. I think.
>
It really is. I had initially considered solving the problem by eliminating the
completion queue, and substituting a refcounting mechanism, but as I wrote it, I
found that the memory allocation and freeing for subprocess_info was going to
need a bunch of augmentation too. Talk about convoluted.... I decided a simple
fixing of the bug was probably for the best.
> I wonder why people aren't reporting this. Perhaps CLONE_VFORK plus
> child-runs-first? (_does_ the chld run first? We seem to have changed
> it a couple of times)
>
I think the child currently does run first, but as you note, its not always been
that way, and it might not be that way in the future, especially if the child
queues to a different cpu for whatever reason.
Neil
prev parent reply other threads:[~2009-07-02 0:24 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-07-01 2:48 [PATCH] kmod: Fix race in usermodehelper code Neil Horman
2009-07-01 20:56 ` Andrew Morton
2009-07-02 0:24 ` Neil Horman [this message]
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=20090702002407.GA20298@localhost.localdomain \
--to=nhorman@tuxdriver.com \
--cc=akpm@linux-foundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=rusty@rustcorp.com.au \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox