On 29. 04. 19, 13:30, Michal Hocko wrote: > On Mon 29-04-19 12:59:39, Jiri Slaby wrote: > [...] >> static inline bool list_lru_memcg_aware(struct list_lru *lru) >> { >> - /* >> - * This needs node 0 to be always present, even >> - * in the systems supporting sparse numa ids. >> - */ >> - return !!lru->node[0].memcg_lrus; >> + return !!lru->node[first_online_node].memcg_lrus; >> } >> >> static inline struct list_lru_one * > > How come this doesn't blow up later - e.g. in memcg_destroy_list_lru > path which does iterate over all existing nodes thus including the > node 0. If the node is not disabled (i.e. is N_POSSIBLE), lru->node is allocated for that node too. It will also have memcg_lrus properly set. If it is disabled, it will never be iterated. Well, I could have used first_node. But I am not sure, if the first POSSIBLE node is also ONLINE during boot? thanks, -- js suse labs