diff options
Diffstat (limited to 'mm/vmscan.c')
| -rw-r--r-- | mm/vmscan.c | 9 | 
1 files changed, 5 insertions, 4 deletions
| diff --git a/mm/vmscan.c b/mm/vmscan.c index bd6637fcd8f9..bf3eedf0209c 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -3323,13 +3323,16 @@ void lru_gen_migrate_mm(struct mm_struct *mm)  	if (mem_cgroup_disabled())  		return; +	/* migration can happen before addition */ +	if (!mm->lru_gen.memcg) +		return; +  	rcu_read_lock();  	memcg = mem_cgroup_from_task(task);  	rcu_read_unlock();  	if (memcg == mm->lru_gen.memcg)  		return; -	VM_WARN_ON_ONCE(!mm->lru_gen.memcg);  	VM_WARN_ON_ONCE(list_empty(&mm->lru_gen.list));  	lru_gen_del_mm(mm); @@ -6754,8 +6757,7 @@ unsigned long mem_cgroup_shrink_node(struct mem_cgroup *memcg,  unsigned long try_to_free_mem_cgroup_pages(struct mem_cgroup *memcg,  					   unsigned long nr_pages,  					   gfp_t gfp_mask, -					   unsigned int reclaim_options, -					   nodemask_t *nodemask) +					   unsigned int reclaim_options)  {  	unsigned long nr_reclaimed;  	unsigned int noreclaim_flag; @@ -6770,7 +6772,6 @@ unsigned long try_to_free_mem_cgroup_pages(struct mem_cgroup *memcg,  		.may_unmap = 1,  		.may_swap = !!(reclaim_options & MEMCG_RECLAIM_MAY_SWAP),  		.proactive = !!(reclaim_options & MEMCG_RECLAIM_PROACTIVE), -		.nodemask = nodemask,  	};  	/*  	 * Traverse the ZONELIST_FALLBACK zonelist of the current node to put |