>> >> The iterator internally takes rcu_read_lock() to avoid any side-effects >> of cgroups added/removed. I suspect you are also suggesting using get_online_mems() >> around each call to for_each_online_node >> >> My understanding so far is >> >> 1. invalidate_reclaim_iterators should be safe (no bad side-effects) >> 2. mem_cgroup_free - should be safe as well >> 3. mem_cgroup_alloc - needs protection >> 4. mem_cgroup_init - needs protection >> 5. mem_cgroup_remove_from_tress - should be safe > > I'm not into the memory hotplug code, but my understanding is that if > memcg offline happens to race with node unplug, it's possible that > > - mem_cgroup_free() doesn't free the node's data, because it sees the > node as already offline > - memcg hotplug code doesn't free the node's data either, because it > sees the cgroup as offline > > May be, we should surround all the loops over online nodes with > get/put_online_mems() to be sure that nothing wrong can happen. > They are slow path, anyway. > Makes sense, agreed Balbir -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>