On Thu, Apr 26, 2018 at 04:52:39PM +0300, Kirill Tkhai wrote:
> >>
> >> 1)for_each_process(g)            copy_process()
> >>                                    p->mm = mm
> >>     smp_rmb();                     smp_wmb() implied by alloc_pid()
> >>     if (g->flags & PF_KTHREAD)     list_add_tail_rcu(&p->tasks, 
> >> &init_task.tasks)
> >>
> >> 2)for_each_thread(g, c)          copy_process()
> >>                                    p->mm = mm
> >>     smp_rmb();                     smp_wmb() implied by alloc_pid()
> >>     tmp = READ_ONCE(c->mm)         list_add_tail_rcu(&p->thread_node, ...)

For these two; what's the purpose of the smp_rmb()? which loads are
ordered?

Reply via email to