diff --git a/[refs] b/[refs] index 84c42c6dde78..f9a1f7b185bf 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 80e148226028257ec0a1909d99b2c40d0ffe17f2 +refs/heads/master: 407f9c8b0889ced1dbe2f9157e4e60c61329d5c9 diff --git a/trunk/mm/memcontrol.c b/trunk/mm/memcontrol.c index c31a310aa146..e0c2066495e3 100644 --- a/trunk/mm/memcontrol.c +++ b/trunk/mm/memcontrol.c @@ -1737,11 +1737,12 @@ int mem_cgroup_try_charge_swapin(struct mm_struct *mm, goto charge_cur_mm; /* * A racing thread's fault, or swapoff, may have already updated - * the pte, and even removed page from swap cache: return success - * to go on to do_swap_page()'s pte_same() test, which should fail. + * the pte, and even removed page from swap cache: in those cases + * do_swap_page()'s pte_same() test will fail; but there's also a + * KSM case which does need to charge the page. */ if (!PageSwapCache(page)) - return 0; + goto charge_cur_mm; mem = try_get_mem_cgroup_from_swapcache(page); if (!mem) goto charge_cur_mm;