From: Oleg Nesterov <oleg@redhat.com>
To: Martin Schwidefsky <schwidefsky@de.ibm.com>
Cc: linux-kernel@vger.kernel.org,
Linus Torvalds <torvalds@linux-foundation.org>,
Andrew Morton <akpm@linux-foundation.org>,
Tetsuo Handa <penguin-kernel@i-love.sakura.ne.jp>
Subject: Re: [PATCH] kernel/kmod: fix use-after-free of the sub_info structure
Date: Thu, 16 Oct 2014 19:37:33 +0200 [thread overview]
Message-ID: <20141016173733.GA18318@redhat.com> (raw)
In-Reply-To: <20141016160042.7f898871@mschwide>
On 10/16, Martin Schwidefsky wrote:
>
> There is a use-after-free bug on the subprocess_info structure allocated
> by the user mode helper. In case do_execve() returns with an error
> ____call_usermodehelper() stores the error code to sub_info->retval,
> but sub_info can already have been freed.
Hmm, yes... do_execve() can fail after mm_release(). CLONE_VFORK doesn't
help in this case.
> @@ -242,13 +263,14 @@ static int ____call_usermodehelper(void *data)
> retval = do_execve(getname_kernel(sub_info->path),
> (const char __user *const __user *)sub_info->argv,
> (const char __user *const __user *)sub_info->envp);
> - if (!retval)
> - return 0;
> -
> - /* Exec failed? */
> -fail:
> +out:
> sub_info->retval = retval;
> - do_exit(0);
> + if (wait != UMH_WAIT_PROC)
> + /* For UMH_WAIT_PROC wait_for_helper calls umh_complete */
> + umh_complete(sub_info);
> + if (retval)
> + do_exit(0);
> + return 0;
> }
OK... I am wondering if __call_usermodehelper() still needs CLONE_VFORK
with this patch.
> @@ -588,7 +580,7 @@ int call_usermodehelper_exec(struct subprocess_info *sub_info, int wait)
> goto out;
> }
>
> - sub_info->complete = &done;
> + sub_info->complete = (wait == UMH_NO_WAIT) ? NULL : &done;
This probably needs a comment, and the comment in umh_complete() should
be updated,
- we own sub_info, the UMH_KILLABLE caller has gone away.
+ we own sub_info, the UMH_KILLABLE caller has gone away
+ or the caller used UMH_NO_WAIT.
The patch looks correct at first glance. I'll try to re-read it later
once again.
Thanks!
Oleg.
next prev parent reply other threads:[~2014-10-16 17:40 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-10-16 14:00 [PATCH] kernel/kmod: fix use-after-free of the sub_info structure Martin Schwidefsky
2014-10-16 16:57 ` Tetsuo Handa
2014-10-16 17:42 ` Oleg Nesterov
2014-10-16 21:30 ` [PATCH] kernel/kmod: fix use-after-free of the sub_infostructure Tetsuo Handa
2014-10-16 21:58 ` Oleg Nesterov
2014-10-17 7:04 ` Martin Schwidefsky
2014-10-17 7:36 ` Martin Schwidefsky
2014-10-17 12:55 ` [PATCH] kernel/kmod: fix use-after-free of the sub_info structure Tetsuo Handa
2014-10-17 15:21 ` [PATCH] kernel/kmod: fix use-after-free of the sub_infostructure Oleg Nesterov
2014-10-17 19:15 ` [PATCH 0/2] (Was: kernel/kmod: fix use-after-free of the sub_infostructure) Oleg Nesterov
2014-10-17 19:16 ` [PATCH 1/2] usermodehelper: don't use CLONE_VFORK for ____call_usermodehelper() Oleg Nesterov
2014-10-17 19:16 ` [PATCH 2/2] usermodehelper: kill the kmod_thread_locker logic Oleg Nesterov
2014-10-17 23:54 ` [PATCH 0/2] (Was: kernel/kmod: fix use-after-free of thesub_infostructure) Tetsuo Handa
2014-10-17 7:02 ` [PATCH] kernel/kmod: fix use-after-free of the sub_infostructure Martin Schwidefsky
2014-10-16 17:37 ` Oleg Nesterov [this message]
2014-10-16 20:16 ` [PATCH] kernel/kmod: fix use-after-free of the sub_info structure Oleg Nesterov
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=20141016173733.GA18318@redhat.com \
--to=oleg@redhat.com \
--cc=akpm@linux-foundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=penguin-kernel@i-love.sakura.ne.jp \
--cc=schwidefsky@de.ibm.com \
--cc=torvalds@linux-foundation.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 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).