This is a note to let you know that I've just added the patch titled vm_is_stack: use for_each_thread() rather then buggy while_each_thread() to the 3.10-stable tree which can be found at: http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary The filename of the patch is: vm_is_stack-use-for_each_thread-rather-then-buggy-while_each_thread.patch and it can be found in the queue-3.10 subdirectory. If you, or anyone else, feels it should not be added to the stable tree, please let <stable@xxxxxxxxxxxxxxx> know about it. >From 4449a51a7c281602d3a385044ab928322a122a02 Mon Sep 17 00:00:00 2001 From: Oleg Nesterov <oleg@xxxxxxxxxx> Date: Fri, 8 Aug 2014 14:19:17 -0700 Subject: vm_is_stack: use for_each_thread() rather then buggy while_each_thread() From: Oleg Nesterov <oleg@xxxxxxxxxx> commit 4449a51a7c281602d3a385044ab928322a122a02 upstream. Aleksei hit the soft lockup during reading /proc/PID/smaps. David investigated the problem and suggested the right fix. while_each_thread() is racy and should die, this patch updates vm_is_stack(). Signed-off-by: Oleg Nesterov <oleg@xxxxxxxxxx> Reported-by: Aleksei Besogonov <alex.besogonov@xxxxxxxxx> Tested-by: Aleksei Besogonov <alex.besogonov@xxxxxxxxx> Suggested-by: David Rientjes <rientjes@xxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> Signed-off-by: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> Cc: Li Zefan <lizefan@xxxxxxxxxx> Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> --- mm/util.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) --- a/mm/util.c +++ b/mm/util.c @@ -272,17 +272,14 @@ pid_t vm_is_stack(struct task_struct *ta if (in_group) { struct task_struct *t; - rcu_read_lock(); - if (!pid_alive(task)) - goto done; - t = task; - do { + rcu_read_lock(); + for_each_thread(task, t) { if (vm_is_stack_for_task(t, vma)) { ret = t->pid; goto done; } - } while_each_thread(task, t); + } done: rcu_read_unlock(); } Patches currently in stable-queue which might be from oleg@xxxxxxxxxx are queue-3.10/introduce-for_each_thread-to-replace-the-buggy-while_each_thread.patch queue-3.10/oom_kill-change-oom_kill.c-to-use-for_each_thread.patch queue-3.10/kernel-fork.c-copy_process-unify-clone_thread-or-thread_group_leader-code.patch queue-3.10/oom_kill-add-rcu_read_lock-into-find_lock_task_mm.patch queue-3.10/vm_is_stack-use-for_each_thread-rather-then-buggy-while_each_thread.patch queue-3.10/oom_kill-has_intersects_mems_allowed-needs-rcu_read_lock.patch -- To unsubscribe from this list: send the line "unsubscribe stable" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html