|
@@ -2323,6 +2323,8 @@ done_restock:
|
|
|
css_get_many(&memcg->css, batch);
|
|
|
if (batch > nr_pages)
|
|
|
refill_stock(memcg, batch - nr_pages);
|
|
|
+ if (!(gfp_mask & __GFP_WAIT))
|
|
|
+ goto done;
|
|
|
/*
|
|
|
* If the hierarchy is above the normal consumption range,
|
|
|
* make the charging task trim their excess contribution.
|
|
@@ -5833,9 +5835,7 @@ void mem_cgroup_swapout(struct page *page, swp_entry_t entry)
|
|
|
if (!mem_cgroup_is_root(memcg))
|
|
|
page_counter_uncharge(&memcg->memory, 1);
|
|
|
|
|
|
- /* XXX: caller holds IRQ-safe mapping->tree_lock */
|
|
|
- VM_BUG_ON(!irqs_disabled());
|
|
|
-
|
|
|
+ /* Caller disabled preemption with mapping->tree_lock */
|
|
|
mem_cgroup_charge_statistics(memcg, page, -1);
|
|
|
memcg_check_events(memcg, page);
|
|
|
}
|