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 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.