On 06/08, Andrew Morton wrote: > > On Sun, 6 Jun 2010 15:34:31 -0700 (PDT) > David Rientjes <rientjes@xxxxxxxxxx> wrote: > > > + if (cpuset_mems_allowed_intersects(current, tsk)) > > + return true; > > + } > > + tsk = next_thread(tsk); > > hm, next_thread() uses list_entry_rcu(). What are the locking rules > here? It's one of both of rcu_read_lock() and read_lock(&tasklist_lock), > I think? Yes, next_thread() is safe under tasklist/rcu/siglock. > > + } while (tsk != start); > > + return false; > > } > > This is all bloat and overhead for non-NUMA builds. I doubt if gcc is > able to eliminate the task_struct walk (although I didn't check). I'd also suggest while_each_thread() instead if next_thread() + "tsk != start", but this is really minor nit. Oleg. -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxxx For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>