From: Oleg Nesterov <oleg@redhat.com>
To: Siddhesh Poyarekar <siddhesh.poyarekar@gmail.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
KOSAKI Motohiro <kosaki.motohiro@gmail.com>,
Alexander Viro <viro@zeniv.linux.org.uk>,
Jamie Lokier <jamie@shareable.org>,
Mike Frysinger <vapier@gentoo.org>,
Alexey Dobriyan <adobriyan@gmail.com>,
Matt Mackall <mpm@selenic.com>,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH 1/2] Take rcu read lock when iterating through thread group
Date: Thu, 1 Mar 2012 17:51:53 +0100 [thread overview]
Message-ID: <20120301165153.GA4211@redhat.com> (raw)
In-Reply-To: <1330579259-3456-1-git-send-email-siddhesh.poyarekar@gmail.com>
On 03/01, Siddhesh Poyarekar wrote:
>
> Protect the iteration through thread group with rcu_read_lock when
> looking for tasks in the group that use the current vma as
> stack. Thanks KOSAKI Motohiro (kosaki.motohiro@gmail.com) for pointing
> it out.
>
> Signed-off-by: Siddhesh Poyarekar <siddhesh.poyarekar@gmail.com>
> ---
> mm/memory.c | 15 +++++++++++----
> 1 files changed, 11 insertions(+), 4 deletions(-)
>
> diff --git a/mm/memory.c b/mm/memory.c
> index 601a920..a88b764 100644
> --- a/mm/memory.c
> +++ b/mm/memory.c
> @@ -3915,20 +3915,27 @@ void print_vma_addr(char *prefix, unsigned long ip)
> * just check in the current task.
> */
> int vm_is_stack(struct task_struct *task,
> - struct vm_area_struct *vma, int in_group)
> + struct vm_area_struct *vma, int in_group)
> {
> + int ret = 0;
> +
> if (vm_is_stack_for_task(task, vma))
> return 1;
>
> if (in_group) {
> struct task_struct *t = task;
> + rcu_read_lock();
> while_each_thread(task, t) {
This is the commont mistake. rcu_read_lock() can not help unless you
verify that ->thread_group.next still points to the rcu-protected
memory.
Just suppose that this task exits, then next_thread() exits too. Now
you take rcu_read_lock() but it is too late, ->next points to nowhere.
Also. In fact while_each_thread() is not safe under rcu. We are going
to fix this, but only for the case when while_each_thread() starts at
the thread group leader.
Oleg.
next prev parent reply other threads:[~2012-03-01 16:58 UTC|newest]
Thread overview: 74+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-01-14 12:35 [PATCH] Mark thread stack correctly in proc/<pid>/maps Siddhesh Poyarekar
2012-01-14 12:35 ` Siddhesh Poyarekar
2012-01-16 11:28 ` Jamie Lokier
2012-01-16 11:28 ` Jamie Lokier
2012-01-16 13:08 ` Siddhesh Poyarekar
2012-01-16 13:08 ` Siddhesh Poyarekar
2012-01-16 16:31 ` Jamie Lokier
2012-01-16 16:31 ` Jamie Lokier
2012-01-16 17:01 ` Siddhesh Poyarekar
2012-01-16 17:01 ` Siddhesh Poyarekar
[not found] ` <20120116163106.GC7180-DqlFc3psUjeg7Qil/0GVWOc42C6kRsbE@public.gmane.org>
2012-01-17 4:54 ` Siddhesh Poyarekar
2012-01-17 4:54 ` Siddhesh Poyarekar
2012-01-17 4:54 ` Siddhesh Poyarekar
2012-02-02 6:24 ` [RESEND][PATCH] " Siddhesh Poyarekar
2012-02-02 6:24 ` Siddhesh Poyarekar
2012-02-02 21:40 ` KOSAKI Motohiro
2012-02-02 21:40 ` KOSAKI Motohiro
2012-02-03 7:09 ` Siddhesh Poyarekar
2012-02-03 7:09 ` Siddhesh Poyarekar
2012-02-03 8:01 ` KOSAKI Motohiro
2012-02-03 8:01 ` KOSAKI Motohiro
2012-02-03 9:49 ` Siddhesh Poyarekar
2012-02-03 9:49 ` Siddhesh Poyarekar
[not found] ` <CAHGf_=qA6EFue2-mNUg9udWV4xSx86XQsnyGV07hfZOUx6_egw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-02-03 10:29 ` Mike Frysinger
2012-02-03 10:29 ` Mike Frysinger
2012-02-03 18:34 ` Siddhesh Poyarekar
2012-02-03 18:34 ` Siddhesh Poyarekar
2012-02-03 18:34 ` Siddhesh Poyarekar
2012-02-08 4:00 ` Siddhesh Poyarekar
2012-02-08 4:00 ` Siddhesh Poyarekar
2012-02-08 17:57 ` KOSAKI Motohiro
2012-02-08 17:57 ` KOSAKI Motohiro
[not found] ` <4F32B776.6070007-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2012-02-11 10:19 ` Siddhesh Poyarekar
2012-02-11 10:19 ` Siddhesh Poyarekar
2012-02-11 10:19 ` Siddhesh Poyarekar
2012-02-11 15:03 ` [PATCH] " Siddhesh Poyarekar
2012-02-11 15:03 ` Siddhesh Poyarekar
2012-02-21 4:24 ` [RESEND][PATCH] " Siddhesh Poyarekar
2012-02-21 4:24 ` Siddhesh Poyarekar
2012-02-22 23:00 ` Andrew Morton
2012-02-22 23:00 ` Andrew Morton
2012-02-23 4:03 ` [PATCH] " Siddhesh Poyarekar
2012-02-23 4:03 ` Siddhesh Poyarekar
2012-02-23 20:22 ` Andrew Morton
2012-02-23 20:22 ` Andrew Morton
2012-02-24 13:05 ` Siddhesh Poyarekar
2012-02-24 13:05 ` Siddhesh Poyarekar
2012-02-26 16:17 ` [PATCH] x86_64: Record stack pointer before task execution begins Siddhesh Poyarekar
2012-02-27 6:17 ` [tip:x86/process] " tip-bot for Siddhesh Poyarekar
2012-02-23 23:47 ` [PATCH] Mark thread stack correctly in proc/<pid>/maps Mike Frysinger
2012-02-24 5:47 ` Siddhesh Poyarekar
2012-02-24 5:47 ` Siddhesh Poyarekar
2012-02-24 16:12 ` Mike Frysinger
2012-02-24 18:23 ` Siddhesh Poyarekar
2012-02-24 18:23 ` Siddhesh Poyarekar
2012-03-01 5:20 ` [PATCH 1/2] Take rcu read lock when iterating through thread group Siddhesh Poyarekar
2012-03-01 5:20 ` [PATCH 2/2] procfs: Mark stack vma with pid of the owning task Siddhesh Poyarekar
2012-03-01 23:17 ` Andrew Morton
2012-03-01 16:51 ` Oleg Nesterov [this message]
2012-03-01 23:21 ` [PATCH 1/2] Take rcu read lock when iterating through thread group Andrew Morton
2012-03-04 20:04 ` Siddhesh Poyarekar
2012-02-23 23:17 ` [PATCH] Mark thread stack correctly in proc/<pid>/maps KOSAKI Motohiro
2012-02-23 23:17 ` KOSAKI Motohiro
2012-02-24 0:49 ` KOSAKI Motohiro
2012-02-24 0:49 ` KOSAKI Motohiro
2012-02-24 5:29 ` Siddhesh Poyarekar
2012-02-24 5:29 ` Siddhesh Poyarekar
2012-02-24 16:14 ` KOSAKI Motohiro
2012-02-24 16:14 ` KOSAKI Motohiro
2012-02-24 18:58 ` Siddhesh Poyarekar
2012-02-24 18:58 ` Siddhesh Poyarekar
-- strict thread matches above, loose matches on Subject: below --
2012-02-28 17:04 + procfs-mark-thread-stack-correctly-in-proc-pid-maps.patch added to -mm tree Oleg Nesterov
2012-02-28 17:18 ` Siddhesh Poyarekar
2012-02-28 17:40 ` 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=20120301165153.GA4211@redhat.com \
--to=oleg@redhat.com \
--cc=adobriyan@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=jamie@shareable.org \
--cc=kosaki.motohiro@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mpm@selenic.com \
--cc=siddhesh.poyarekar@gmail.com \
--cc=vapier@gentoo.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.