On 06/12, Boris Ostrovsky wrote: > > On 06/12/2015 04:53 PM, Oleg Nesterov wrote: >>> >>> for_each_process(p) { >>> >>> for_each_thread(p, t) { >>> if (t->mm) { >>> do_something(t->mm); >>> break; >>> } >>> } >>> } >>> >>> But either way I don't understand what protects this ->mm. Perhaps this >>> needs >>> find_lock_task_mm(). >> >> And, I don't understand this code, probably this doesn't matter, but. >> >> unpin_all() is probably fine, but xen_mm_pin_all() can race with fork() >> and miss the new child. Is it OK? > > > Currently xen_mm_pin_all() is only called in the suspend path, out of > stop_machine(), so presumably at that time fork is not possible.
OK, thanks, this also means that this code shouldn't worry about ->mm, it should be stable. But for_each_process() in sync_global_pgds() should, afaics. Oleg. -- 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/