Messages in this thread | | | Date | Thu, 1 Dec 2011 13:29:11 -0800 | From | Andrew Morton <> | Subject | Re: [rfc 2/3] fs, proc: Introduce the Children: line in /proc/<pid>/status |
| |
On Thu, 1 Dec 2011 13:54:34 +0400 Cyrill Gorcunov <gorcunov@gmail.com> wrote:
> +int proc_pid_children(struct seq_file *m, struct pid_namespace *ns, > + struct pid *pid, struct task_struct *task) > +{ > + struct task_struct *c; > + > + read_lock(&tasklist_lock); > + list_for_each_entry(c, &task->children, sibling) > + seq_printf(m, " %d", pid_nr_ns(task_pid(c), ns)); > + read_unlock(&tasklist_lock); > + seq_putc(m, '\n'); > + > + return 0; > +}
That's a potentially very long hold time for tasklist_lock, and userspace can invoke this at a high frequency. Not good.
I think this can all be done under rcu_read_lock() with list_for_each_entry_rcu().
| |