]> bbs.cooldavid.org Git - net-next-2.6.git/blobdiff - mm/memcontrol.c
memcg: fix race in file_mapped accouting flag management
[net-next-2.6.git] / mm / memcontrol.c
index 9be3cf8a5da462d4b1b4103eef61f8d5a9a6e06c..0e3fdbd809c7dad28cc5c6558ad9d2ab23bf982f 100644 (file)
@@ -1485,7 +1485,8 @@ void mem_cgroup_update_file_mapped(struct page *page, int val)
                SetPageCgroupFileMapped(pc);
        } else {
                __this_cpu_dec(mem->stat->count[MEM_CGROUP_STAT_FILE_MAPPED]);
-               ClearPageCgroupFileMapped(pc);
+               if (!page_mapped(page)) /* for race between dec->inc counter */
+                       ClearPageCgroupFileMapped(pc);
        }
 
 done: