memcg: fix deadlock between lock_page_cgroup and mapping tree_lock
[sfrench/cifs-2.6.git] / mm / swap_state.c
index 81c825f67a7f5bebfad1750d660551e2e2f9f2c3..1416e7e9e02db3b5da60fe3a270e98e7b84024bb 100644 (file)
@@ -17,6 +17,7 @@
 #include <linux/backing-dev.h>
 #include <linux/pagevec.h>
 #include <linux/migrate.h>
+#include <linux/page_cgroup.h>
 
 #include <asm/pgtable.h>
 
@@ -187,6 +188,7 @@ void delete_from_swap_cache(struct page *page)
        __delete_from_swap_cache(page);
        spin_unlock_irq(&swapper_space.tree_lock);
 
+       mem_cgroup_uncharge_swapcache(page, entry);
        swap_free(entry);
        page_cache_release(page);
 }