[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-Id: <20120320140316.f52388bd.akpm@linux-foundation.org>
Date: Tue, 20 Mar 2012 14:03:16 -0700
From: Andrew Morton <akpm@...ux-foundation.org>
To: Konstantin Khlebnikov <khlebnikov@...nvz.org>
Cc: Siddhesh Poyarekar <siddhesh.poyarekar@...il.com>,
linux-next@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH linux-next] mm: fix rcu-lock/unlock balance in
vm_is_stack()
On Wed, 21 Mar 2012 00:54:55 +0400
Konstantin Khlebnikov <khlebnikov@...nvz.org> wrote:
> Fix bug introduced in "procfs: mark thread stack correctly in proc/<pid>/maps"
> (patch in mm/linux-next)
>
> Signed-off-by: Konstantin Khlebnikov <khlebnikov@...nvz.org>
> ---
> mm/memory.c | 5 ++---
> 1 files changed, 2 insertions(+), 3 deletions(-)
>
> diff --git a/mm/memory.c b/mm/memory.c
> index ee85fc4..cc08b86 100644
> --- a/mm/memory.c
> +++ b/mm/memory.c
> @@ -3932,13 +3932,12 @@ pid_t vm_is_stack(struct task_struct *task,
> while_each_thread(task, t) {
> if (vm_is_stack_for_task(t, vma)) {
> ret = t->pid;
> - goto done;
> + break;
> }
> }
> + rcu_read_unlock();
> }
>
> -done:
> - rcu_read_unlock();
> return ret;
> }
>
Appears to have been fixed in v3:
pid_t vm_is_stack(struct task_struct *task,
struct vm_area_struct *vma, int in_group)
{
pid_t ret = 0;
if (vm_is_stack_for_task(task, vma))
return task->pid;
if (in_group) {
struct task_struct *t;
rcu_read_lock();
if (!pid_alive(task))
goto done;
t = task;
do {
if (vm_is_stack_for_task(t, vma)) {
ret = t->pid;
goto done;
}
} while_each_thread(task, t);
done:
rcu_read_unlock();
}
return ret;
}
I'm working on getting a -next update sent to Stephen today.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists