On Wed, Jul 30, 2014 at 02:52:41PM +0800, Lai Jiangshan wrote: > On 07/29/2014 06:56 AM, Paul E. McKenney wrote: > > > + /* > > + * Each pass through the following loop scans the list > > + * of holdout tasks, removing any that are no longer > > + * holdouts. When the list is empty, we are done. > > + */ > > + while (!list_empty(&rcu_tasks_holdouts)) { > > + schedule_timeout_interruptible(HZ / 10); > > + flush_signals(current); > > + rcu_read_lock(); > > + list_for_each_entry_rcu(t, &rcu_tasks_holdouts, > > + rcu_tasks_holdout_list) { > > + if (smp_load_acquire(&t->rcu_tasks_holdout)) > > + continue; > > + list_del_init(&t->rcu_tasks_holdout_list); > > + /* @@@ need to check for usermode on CPU. */ > > + } > > + rcu_read_unlock(); > > Maybe I missed something. The task @t may already exited and we access to > the stale memory here if without patch 8/9.
Yep, patch 8/9 is not optional. Thanx, Paul -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/