On Sat, Nov 05, 2011 at 02:21:10PM -0700, Kevin Cernekee wrote: > +void local_flush_tlb_all_mm(void) > +{ > + struct task_struct *p; > + > + for_each_process(p) > + if (p->mm) > + local_flush_tlb_mm(p->mm); Aside of for_each_process being a potencially very heavy iterator - there can be thousands of threads on some systems, even embedded systems I'm missing the task_list lock being taken so bad things could happen. Ralf